Как найти среднее значение только для некоторых строк в таблице? - PullRequest
0 голосов
/ 04 мая 2020

Я новичок в R и делаю некоторые базовые c вещи. Интересно, как найти среднее значение только для некоторых строк? Например, как я могу найти средний вес только для корги? (На самом деле есть 100 строк вместо 8, а строки 1-50 - это корги) Я пробовал korgiweight <-aggregate(mytabledata[1:50], list(mytabledata$Weight(kg), mean) Но там написано "выбраны неопределенные столбцы" Спасибо.

**Breed Weight(kg)** Korgi 10 korgi 11 korgi 10.5 korgi 12 husky 20 husky 24 husky 26 husky 25

Ответы [ 2 ]

2 голосов
/ 04 мая 2020

Существует много способов расчета сгруппированных средних. Тот, который вы пытались сделать, это через aggregate. Это работает следующим образом:

aggregate(weight ~ species, data = df, mean)
  species weight
1   Korgi   18.8
2     XYZ   17.9

Если вы хотите вычислить среднее значение только для определенного диапазона строк, вам необходимо задать подкадр данных или обе переменные в этом диапазоне:

aggregate(weight ~ species, data = df[1:10,], mean)
# or:
aggregate(weight[1:10] ~ species[1:10], data = df, mean)

  species[1:10] weight[1:10]
1         Korgi         18.8 

Связанная функция - tapply, которая применяет функцию, в данном случае mean, к таблице:

tapply(df$weight, df$species, mean)
Korgi   XYZ 
 18.8  17.9 

Иллюстративные данные:

set.seed(123)
df <- data.frame(species = c(rep("Korgi", 10), rep("XYZ", 10)),
                 weight = sample(10:25, 20, replace = T))
0 голосов
/ 04 мая 2020

Вы можете сделать:

korgiweight <- mean(df$Weight.kg.[df$Breed == 'korgi'], na.rm = TRUE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...