0

データフレームの各行について、このデータフレームの列から取得した数値から値を計算したいと考えています。計算値が 2 を超える場合は、別の列の値を 0 に設定し、それ以外の場合は 1 に設定します。

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

これはエラーをスローします

条件の長さが 1 を超えており、最初の要素のみが使用されます

x はベクトルなので

どうすればこれを解決できますか? 1 つの方法は、これを関数として記述し、それをデータフレームに適用することです。他のオプションはありますか?

また、 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))

最初から 2 で割る必要はありません。合計が 4 より大きいかどうかを確認できます。この関数as.numericは、ブール値を数値 (0 および 1) 値に変換するために使用されます。

于 2013-03-14T13:38:33.283 に答える