A: как использовать aggregate() и не удалять строки с помощью na


Вы можете использовать функцию Aggregate() в R для расчета сводной статистики для переменных в фрейме данных.

По умолчанию, если функция Aggregate() обнаруживает строку во фрейме данных с одним или несколькими значениями NA, она просто удалит эту строку при выполнении вычислений.

Это может привести к неожиданным последствиям при выполнении расчетов.

Чтобы избежать такого поведения, вы можете использовать аргумент na.action=NULL в функции Aggregate() .

В следующем примере показано, как использовать этот аргумент на практике.

Пример: используйте aggate() в R и не удаляйте строки с NA.

Предположим, у нас есть следующий фрейм данных в R, который показывает очки и передачи баскетболистов из разных команд:

 #create data frame
df <- data. frame (team=c('A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'C', 'C'),
                 points=c(5, 9, 12, 14, 14, 13, 10, 6, 15, 18),
                 assists=c(NA, 4, 4, 5, 3, 6, 8, 4, 10, NA))

#view data frame
df

   team points assists
1 to 5 NA
2 to 9 4
3 to 12 4
4 to 14 5
5 A 14 3
6 B 13 6
7 B 10 8
8 B 6 4
9 C 15 10
10 C 18 NA

Теперь предположим, что мы пытаемся использовать функцию Aggregate() для расчета суммы очков и передач , сгруппированных по командам :

 #attempt to calculate sum of points and assists, grouped by team
aggregate(. ~ team, data=df, FUN=sum, na. rm = TRUE )

  team points assists
1 A 49 16
2 B 29 18
3 C 15 10

Кажется, что результат показывает нам сумму очков и передач на команду, но строки со значениями NA фактически были удалены при выполнении этих расчетов.

Мы можем подтвердить это, посмотрев на исходный фрейм данных и увидев, что команда C имеет два значения в столбце очков :

  • 15
  • 18

Итак, команда C должна иметь в общей сложности 33 очка, но результат показывает только 15.

Это связано с тем, что строка со значением очков 18 имеет значение NA в столбце передач , что означает, что эта строка фактически не использовалась при расчете суммы очков команды по сравнению с

Чтобы гарантировать, что строки со значениями NA не удаляются при выполнении вычислений, нам нужно использовать аргумент na.action=NULL следующим образом:

 #calculate sum of points and assists, grouped by team (don't drop NA rows)
aggregate(. ~ team, data=df, FUN=sum, na. rm = TRUE , na. action =NULL)

  team points assists
1 A 54 16
2 B 29 18
3 C 33 10

Обратите внимание, что функция Aggregate() на этот раз корректно возвращает сумму значений очков для команды C, равную 33.

Примечание . Аргумент na.rm=TRUE указывает, что значения NA следует игнорировать при выполнении вычислений в определенном столбце.

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные задачи в R:

Как использовать функцию summary() в R
Как рассчитать среднее значение на группу в R
Как рассчитать описательную статистику в R

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *