如何找到具有不同数量值的每一行的均值

时间:2019-01-21 13:53:03

标签: r

我有以下数据集:

Class   Budget  Total   Rank                                    
A        120    1926    58     5    9      2       10      3                
B        120    3146    52     6    15     55      6       7    8   9       
C        120    2358    51     0.9  -6     0.5                      
D        120    3252    57     33   16     0.5     9       7    6   3   4   6

我想从Rank之后的值开始获取每一行的平均值。为此,我尝试了以下操作:

data[, "Mean"] <- rowMeans(data[, 5:length(data)], na.rm = TRUE)

我也尝试过:

data[, "Mean"] <- apply(data[, 5:length(data)], 1, mean, na.rm = TRUE)

在两种情况下,我都得到以下结果:

Class      Mean
A          5.857143
B          18.555556      #the correct mean is 15.1428571429
C          -1.940000      #the correct mean is -1.5333333333
D          10.727273      #the correct mean is 9.3888888889

第一类的平均值是正确的,但另一种是不正确的。

您知道问题出在哪里吗?

1 个答案:

答案 0 :(得分:2)

也许这可以帮助您

mean_row <- rowMeans(data[, 5:ncol(data)], na.rm = TRUE)
     mean_row
[1]  5.800000 15.142857 -1.533333  9.388889

所以:

data$mean_row <- rowMeans(data[, 5:ncol(data)], na.rm = TRUE)

有数据:

data <- read.table(text = "
Class   Budget  Total   Rank   a    b      c       d       e   f    g   h   i    
A        120    1926    58     5    9      2       10      3    NA  NA  NA  NA      
B        120    3146    52     6    15     55      6       7    8   9   NA  NA      
C        120    2358    51     0.9  -6     0.5     NA      NA   NA  NA  NA  NA               
D        120    3252    57     33   16     0.5     9       7    6   3   4   6
                ",header = T)