2016-11-21 104 views
-1

我在R.數據幀例如,數據幀被稱爲X,並且包括以下各列在一個數據幀的新變量:創建基於條件

x1 = c(1,0,0,0) 
X2 = c(0,0,0,0) 
X3 = c(0,0,0,0) 
X4 = c(0,0,1,0) 

我要添加一個條件,對於每個的4名受試者的,如果至少一列是1,則一個新的變量將被創建越來越1.否則,如果所有都爲0的新變量將爲0

我嘗試這樣做:

if (X$X1 == 1 || X$X2 == 1 || X$X3 == 1 || X$X4 == 1 || X$X5 == 1) 
{ 
    NewVar = 1 
} 
else { NewVar = 0 } 

不過,我不斷收到一個錯誤:

Error: unexpected 'else' in "else" and in my code R studio say: Unexpected token 'else'

能否請你幫我找到這個問題?謝謝。

+0

用'X $ NewVar < - as.integer(rowSums(X)> 0)'' – akrun

+0

DF $ newvar < - as.integer(rowSums(DF)> 0 )' – Jaap

回答

1

我們可以使用rowSums

X$NewVar <- as.integer(rowSums(X) > 0) 
+0

謝謝,我會試試,但我的if-else代碼有什麼問題?如果我在數據框中有更多的變量會發生什麼,我只希望僅對其中的一部分有所瞭解?例如,如果我只想在X1,X2上調節? – user2899944

+0

@ user2899944您正在使用'if/else'(適用於單個元素),並且沒有被矢量化。如果你想要一個向量化的選項,它是'ifelse'。其次,'||'應該是'|' – akrun

+0

我明白了。請再提一個問題。如果我把上面的第一個想法,但我的數據框架包括一個更多的變量(subjectID),我怎麼能總結不包括第一列的行? – user2899944