如果是数据帧的声明

时间:2016-02-13 13:27:20

标签: r if-statement

我有以下示例数据:

A = data.frame( x=c('x','x','y','y','z','z'), j=c(1,1,1,2,2,3)   )
A$z[A$x=="x"]=1
A$z[A$x=="y"]=1
A$z[is.na(A$z)]=0

我想创建一个新列"Test",使用等于1的列"z"作为条件,并获取列"x"的值。

我使用以下语句,但有一条警告消息

if(A$z==1)A$Test=A$z
  

警告讯息:   在if(A $ z == 1)A $ Test = A $ z:     条件的长度> 1,只使用第一个元素

我该如何纠正?

2 个答案:

答案 0 :(得分:3)

我们也可以

A$Test <- NA^(A$z!=1)*A$z

答案 1 :(得分:1)

test变量创建为数据框的一部分,并使用ifelse()添加适当的值。考虑一下:

A$Test = ifelse(A$z==1, A$z, NA)