2014-12-07 62 views
0

我有一個包含多個變量的data.frame對象。我試圖創建一個額外的變量,表示一個值(例如2)在許多其他變量中出現的次數。例如,如果在R中創建添加索引

mydata <- data.frame(x=c(1, 2, NA), y = c(NA, 2, 2), z=c(NA, NA, 2)) 
    x y z 
1 1 NA NA 
2 2 2 NA 
3 NA 2 2 

然後我想創建一個新的變量(Z1)表示的次數即2點出現在該行中,根據變量x和y。因此,新的data.frame是這樣的:

x y z z1 
1 1 NA NA 0 
2 2 2 NA 2 
3 NA 2 2 1 

我使用if語句到目前爲止已經試過,但他們返回,因爲缺失值的誤差。有什麼想法嗎?

回答

1

這應該做你想要什麼:

mydata$z1 <- apply(X = mydata[,c("x","y")] == 2, MARGIN = 1, FUN = sum, na.rm=TRUE) 

mydata 
    x y z z1 
1 1 NA NA 0 
2 2 2 NA 2 
3 NA 2 2 1 
2

您可以嘗試

transform(mydata, z1=rowSums(cbind(x,y)==2, na.rm=TRUE)) 
# x y z z1 
#1 1 NA NA 0 
#2 2 2 NA 2 
#3 NA 2 2 1