对于我的数据帧的每一行,我想根据从该数据帧的列中获取的数字计算一个值。如果计算的值大于2,我想将另一列值设置为0,否则设置为1。
x=(df$firstnumber+df$secondnumer)/2
if(x>2){
df$binaryValue=0}
else{ df$binaryValue=1}
这会引发错误
条件的长度> 1,只使用第一个元素
因为x是向量
我该如何解决这个问题?一种方法是将其作为函数编写并将其应用于数据框 - 还有其他选项吗?
另外,我怎么能写这个用于appl()?
提前致谢
答案 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)值。