簡體   English   中英

R:逐行檢查多個值

[英]R: row-wise checking for multiple values

我有一個看起來像這樣的數據集

在此處輸入圖像描述

下面有更多行。 我想在右邊創建一個列,如果它與我正在逐行檢查的某個值匹配,它將有 1,否則它將為 0。對於單個值,我有以下代碼 -

set.seed(4991)

my_data <- data.frame(ceiling(matrix(runif(100,4,10),ncol = 5)))

comval <- c(5)

my_data$bleh <- as.integer(apply(my_data, 1, function(r) any(comval %in% r)))

output 看起來像這樣 -

在此處輸入圖像描述

這就是我想要的。 現在我遇到的問題是,如果我在 'comval' 下有兩個或更多值,例如, comval<-c(5,10)我在 'bleh' 列上得到 1 對於所有具有 5 或10. output 就像 -

在此處輸入圖像描述

它就像一個 OR 邏輯運算符。 我需要它作為 AND 邏輯運算符工作,也就是說,僅當行中存在“comval”中的所有值時,“bleh”列才會具有值 1。

此外,我正在嘗試在此處編寫一個 function,因此我需要將length(comval)作為輸入,然后針對每一行檢查“comval”中的所有值。

您可以檢查intersect length是否等於或大於 1。

my_data$bleh <- as.integer(apply(my_data, 1, function(r) {
    length(intersect(comval, unlist(r))) >= 1
}))
#    X1 X2 X3 X4 X5 bleh
# 1   5 10  5  6 10    1
# 2   9  9  5  8  6    1
# 3   5 10  5  5  5    1
# 4  10  8  6  5  8    1
# 5   8  6  7  9 10    1
# 6   5 10  8 10  8    1
# 7   9  8 10  5  7    1
# 8   6  8 10  6  7    1
# 9   5  5  6  6  8    1
# 10 10  5  8  6  8    1
# 11  9 10 10  7  7    1
# 12  6  8  7 10  8    1
# 13  6  9  7  6  9    0
# 14  8  6  6 10  7    1
# 15  9  9  5  7  7    1
# 16 10  9  9 10  6    1
# 17  7 10  5 10  8    1
# 18  9  8 10  9  9    1
# 19 10  8  9  6  8    1
# 20  5  8  6  7  5    1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM