R

时间:2018-11-26 15:40:17

标签: r

我有一个看起来像

的数据集
    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)

两者均无效。

1 个答案:

答案 0 :(得分:0)

在不完全了解您的状况的情况下,建议您结合使用dplyrifelse

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