[英]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.