2017-10-05 99 views
0

我似乎無法弄清楚這一點。我想要做的是在我的數據框中創建一個新列,其中列的總和除以列出總和的列數。 所以這樣的:R列的總和除以列數沒有NA

ID 2003 2004 2005 2006 
1 1 4 1 NA 
2 2 2 NA 3 
3 1 3 NA NA 
4 4 1 1 NA 
5 3 1 4 2 

這樣:

ID 2003 2004 2005 2006 SUM/col 
1 1 4 1 NA 2 
2 2 2 NA 3 2.33 
3 1 3 NA NA 2 
4 4 1 1 NA 3 
5 3 1 4 2 2.5 

回答

4

我們可以使用rowMeans函數並設置na.rm = TRUEdt[, -1]是一種排除分析的第一列的方法。

dt$`SUM/col` <- rowMeans(dt[, -1], na.rm = TRUE) 
dt 
    ID X2003 X2004 X2005 X2006 SUM/col 
1 1  1  4  1 NA 2.000000 
2 2  2  2 NA  3 2.333333 
3 3  1  3 NA NA 2.000000 
4 4  4  1  1 NA 2.000000 
5 5  3  1  4  2 2.500000 

DATA

dt <- read.table(text = "ID 2003 2004 2005 2006 
1 1 4 1 NA 
       2 2 2 NA 3 
       3 1 3 NA NA 
       4 4 1 1 NA 
       5 3 1 4 2", 
       header = TRUE) 
2

如果您data.frame被稱爲df,然後嘗試:

df$"SUM/col" <- apply(df, 1, function(x) mean(x, na.rm=T)) 

apply函數計算,每一行的總和(不包括NA s)除以非NA元素的總數。然後將得到的載體作爲列添加到df

+2

或'申請(DF,1,意思是,na.rm = T)' – Gregor