我試圖找出一種方法在R中從多個列創建單個列。我想要做的是讓R遍歷所有行以獲得多個列,如果它在其中一列中找到正面結果,則將該結果傳遞到「汞合金」列(對不起,我不知道更好的詞)。將多個列的正面結果傳遞到r中的單個新列中
見下
x <- c(NA, NA, NA, NA, NA, 1)
y <- c(NA, NA, 1, NA, NA, NA)
z <- c(NA, 1, NA, NA, NA, NA)
df <- data.frame(cbind(x, y, z))
df[, "compCol"] <- NA
df
x y z compCol
1 NA NA NA NA
2 NA NA 1 NA
3 NA 1 NA NA
4 NA NA NA NA
5 NA NA NA NA
6 1 NA NA NA
玩具數據集我需要通過從每一列的積極結果的compCol列,同時改變陰性結果爲0。因此,它看起來像這樣。
x y z compCol
1 NA NA NA 0
2 NA NA 1 3
3 NA 1 NA 2
4 NA NA NA 0
5 NA NA NA 0
6 1 NA NA 1
我知道大概需要嵌套在for循環的,如果else語句,但我在,我不理解的錯誤嘗試的結果的所有方式。
我嘗試了下面的一列
for (i in 1:length(x)) {
if (df$x[i] == 1) {
df$compCol[i] <- df$x[i]
}
}
但它並沒有在所有的工作。
我得到的消息 '錯誤的,如果(DF $ X [I] == 1){:缺失值,其中TRUE/FALSE需要的'
這是有道理的,但我看不出哪裏放TRUE/FALSE聲明
請,不要做'data.frame(cbind(X,Y,Z))'。只需'data.frame(x,y,z)'。 – 2015-10-15 05:58:21