Вы можете использовать следующий базовый синтаксис, чтобы применить функцию к каждой строке во фрейме данных в R, используя функции из dplyr:
df %>%
rowwise() %>%
mutate(mean_value = mean(c(col1, col2, col3), na. rm = TRUE ))
В этом конкретном примере вычисляется среднее значение col1 , col2 и col3 для каждой строки во фрейме данных, но вы можете заменить функцию mean() любой функцией, для которой вы хотите вычислить другую метрику.
В следующих примерах показано, как использовать этот синтаксис на практике со следующим фреймом данных, который содержит информацию об очках, набранных разными баскетболистами в разных играх:
#create data frame
df <- data.frame(game1=c(22, 25, 29, 13, 22, 30),
game2=c(12, 10, 6, 6, 8, 11),
game3=c(NA, 15, 15, 18, 22, 13))
#view data frame
df
game1 game2 game3
1 22 12 NA
2 25 10 15
3 29 6 15
4 13 6 18
5 22 8 22
6 30 11 13
Пример 1: Среднее значение конкретных столбцов в каждой строке
В следующем коде показано, как вычислить среднее значение столбцов game1 и game3 для каждой строки во фрейме данных:
library(dplyr)
#calculate mean of game1 and game3
df %>%
rowwise() %>%
mutate(mean_points = mean(c(game1, game3), na. rm = TRUE ))
# A tibble: 6 x 4
# Rowwise:
game1 game2 game3 mean_points
1 22 12 NA 22
2 25 10 15 20
3 29 6 15 22
4 13 6 18 15.5
5 22 8 22 22
6 30 11 13 21.5
Из вывода мы видим:
- Среднее значение game1 и game3 в первой строке равно 22 .
- Среднее значение game1 и game3 во второй строке равно 20 .
- Среднее значение game1 и game3 в третьей строке равно 22 .
И так далее.
Пример 2: максимальное количество определенных столбцов в каждой строке
Следующий код показывает, как вычислить максимальное значение столбцов game2 и game3 для каждой строки во фрейме данных:
library(dplyr)
#calculate max of game2 and game3
df %>%
rowwise() %>%
mutate(max_points = max(c(game2, game3), na. rm = TRUE ))
# A tibble: 6 x 4
# Rowwise:
game1 game2 game3 max_points
1 22 12 NA 12
2 25 10 15 15
3 29 6 15 15
4 13 6 18 18
5 22 8 22 22
6 30 11 13 13
Из вывода мы видим:
- Максимальное значение game2 и game3 в первой строке равно 12 .
- Максимальное значение game2 и game3 во второй строке равно 15 .
- Максимальное значение game2 и game3 в третьей строке равно 15 .
И так далее.
Пример 3: Стандартное отклонение определенных столбцов в каждой строке
В следующем коде показано, как вычислить стандартное отклонение значений в столбцах game2 и game3 для каждой строки во фрейме данных:
library(dplyr)
#calculate standard deviation of game2 and game3
df %>%
rowwise() %>%
mutate(sd_points = sd(c(game2, game3), na. rm = TRUE ))
# A tibble: 6 x 4
# Rowwise:
game1 game2 game3 sd_points
1 22 12 NA NA
2 25 10 15 3.54
3 29 6 15 6.36
4 13 6 18 8.49
5 22 8 22 9.90
6 30 11 13 1.41
Из вывода мы видим:
- Стандартное отклонение game2 и game3 в первой строке равно NA (поскольку стандартное отклонение не может быть рассчитано только по одному значению).
- Стандартное отклонение game2 и game3 во второй строке равно 3,54 .
- Стандартное отклонение game2 и game3 в первой строке 6.36 .
И так далее.
Примечание.Полную документацию по функции rowwise() в dplyr можно найти здесь .
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи с помощью dplyr:
Как подсчитать различные значения с помощью dplyr
Как суммировать несколько столбцов с помощью dplyr
Как заменить несколько значений во фрейме данных с помощью dplyr