我有以下数据集:
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
第一类的平均值是正确的,但另一种是不正确的。
您知道问题出在哪里吗?
答案 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)