Как найти среднее значение для каждой строки с разным количеством значений - PullRequest
0 голосов
/ 21 января 2019

У меня есть следующий набор данных:

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

Я хочу получить среднее значение для каждой строки, начиная со значения после ранга. Для этого я попробовал следующее:

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 голосов
/ 21 января 2019

Может быть, это может помочь:

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)   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...