R设定值依赖于另一个值

时间:2013-03-14 13:33:06

标签: r dataframe

对于我的数据帧的每一行,我想根据从该数据帧的列中获取的数字计算一个值。如果计算的值大于2,我想将另一列值设置为0,否则设置为1。

x=(df$firstnumber+df$secondnumer)/2
if(x>2){
df$binaryValue=0}
else{ df$binaryValue=1}

这会引发错误

  

条件的长度> 1,只使用第一个元素

因为x是向量

我该如何解决这个问题?一种方法是将其作为函数编写并将其应用于数据框 - 还有其他选项吗?

另外,我怎么能写这个用于appl()?

提前致谢

2 个答案:

答案 0 :(得分:4)

你可以简单地做......

df$BinaryValue <- ifelse( x > 2 , 0 , 1 )

所以你得到......

df <- data.frame( x = 1:5 , y = -2:2 )
x <- df$x + df$y
df$BinaryValue <- ifelse( x > 2 , 0 , 1 )

df
#     x  y BinaryValue
#   1 1 -2           1
#   2 2 -1           1
#   3 3  0           0
#   4 4  1           0
#   5 5  2           0

答案 1 :(得分:3)

transform(df, BinaryValue = as.numeric(firstnumber + secondnumber > 4))

首先不需要除以2。您可以检查总和是否大于4。函数as.numeric用于将布尔值转换为数字(0和1)值。