0

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

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

这会引发错误

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

因为 x 是一个向量

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

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

提前致谢

4

2 回答 2

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
于 2013-03-14T13:36:16.210 回答
3
transform(df, BinaryValue = as.numeric(firstnumber + secondnumber > 4))

首先没有必要除以二。您可以检查总和是否大于四。该函数as.numeric用于将布尔值转换为数字(0 和 1)值。

于 2013-03-14T13:38:33.283 回答