【发布时间】:2016-02-13 13:27:19
【问题描述】:
我有以下示例数据:
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
警告信息: 如果 (A$z == 1) A$Test = A$z : 条件的长度 > 1,并且只使用第一个元素
我该如何纠正这个问题?
【问题讨论】:
-
I am the following sample data- 很高兴认识你,A;-) -
A[“测试”]
-
感谢@vaettchen,但列返回数字而不是列“x”的确切值
-
idx <- A$z == 1; A$Test[idx] <- as.character(A$x[idx])? -
这是因为您的列 x 是一个因素。对于示例数据,您可以使用
A[ "Test" ] <- ifelse( A$z == 1, as.character( A$x ), 9 )解决此问题。对于您的真实数据,请与str( A )核对您拥有的数据类型。
标签: r if-statement