2017-10-05 10 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 = TRUEを設定することができます。 dt[, -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を除く)を非NA要素の総数で割ったものです。次いで、得られたベクターをdfの列として加える。

+2

や '適用(DF、1、平均、na.rm = T)' – Gregor

関連する問題