我有一个看起来像
的数据集 V1 V2 V3
1 Yes 1 a
2 no 2 a
3 Yes 3 NULL
4 no 4 a
5 Yes 1 a
6 no 2 NULL
7 Yes 3 a
8 no 4 a
9 Yes 1 NULL
10 no 2 a
11 Yes 3 a
12 no 4 NULL
13 Yes 1 a
14 no 2 a
15 Yes 3 a
16 no 1 NULL
17 Yes 2 a
然后是两组向量
values=c('Yes',3)
columns=c(1,2)
我想检查第1列是否等于Yes,第2列等于3。我使用了这段代码
f=ifelse(data[,columns[1]]==values[1] & data[,columns[2]]==values[2] ,1,0)
这工作得很好,但是我希望代码能够循环通过大小为n,n值和n列的向量。
我尝试了
flagf=apply(data, 1, function(x) {ifelse(all(data[,columns[1:length(columns)]==values[1:length(values])),0,1)})
和
ifelse(data[,columns[1:length(columns)]==values[1:length(values)],0,1)
两者均无效。
答案 0 :(得分:0)
在不完全了解您的状况的情况下,建议您结合使用dplyr
和ifelse
。
library(dplyr)
df <- read.table("clipboard", header=T) # reading your data...
df %>%
mutate(cond = ifelse(V1=="Yes" & V2==3, TRUE, FALSE))
V1 V2 V3 cond
1 Yes 1 a FALSE
2 no 2 a FALSE
3 Yes 3 NULL TRUE
4 no 4 a FALSE
5 Yes 1 a FALSE
6 no 2 NULL FALSE
7 Yes 3 a TRUE
8 no 4 a FALSE
9 Yes 1 NULL FALSE
10 no 2 a FALSE
11 Yes 3 a TRUE
12 no 4 NULL FALSE
13 Yes 1 a FALSE
14 no 2 a FALSE
15 Yes 3 a TRUE
16 no 1 NULL FALSE
17 Yes 2 a FALSE