Как использовать функцию cross() в dplyr (3 примера)


Вы можете использовать функцию cross () из пакета dplyr в R, чтобы применить преобразование к нескольким столбцам.

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

Метод 1: применить функцию к нескольким столбцам

#multiply values in col1 and col2 by 2
df %>% 
 mutate(across(c(col1, col2), function (x) x\*2))

Метод 2: вычислить одну сводную статистику для нескольких столбцов

#calculate mean of col1 and col2
df %>%
 summarise(across(c(col1, col2), mean, na. rm = TRUE ))

Метод 3: вычисление нескольких сводных статистических данных для нескольких столбцов

#calculate mean and standard deviation for col1 and col2
df %>%
 summarise(across(c(col1, col2), list(mean=mean, sd=sd), na. rm = TRUE ))

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

#create data frame
df <- data.frame(conf=c('East', 'East', 'East', 'West', 'West', 'West'),
 points=c(22, 25, 29, 13, 22, 30),
 rebounds=c(12, 10, 6, 6, 8, 11))

#view data frame
df

 conf points rebounds
1 East 22 12
2 East 25 10
3 East 29 6
4 West 13 6
5 West 22 8
6 West 30 11

Пример 1. Применение функции к нескольким столбцам

В следующем коде показано, как использовать функцию cross () для умножения значений в столбцах очков и подборов на 2:

library(dplyr)

#multiply values in points and rebounds columns by 2
df %>% 
 mutate(across(c(points, rebounds), function (x) x\*2))

 conf points rebounds
1 East 44 24
2 East 50 20
3 East 58 12
4 West 26 12
5 West 44 16
6 West 60 22

Пример 2. Вычисление одной сводной статистики для нескольких столбцов

В следующем коде показано, как использовать функцию cross() для вычисления среднего значения как для столбцов очков , так и для столбцов подборов :

library(dplyr) 

#calculate mean value of points an rebounds columns
df %>%
 summarise(across(c(points, rebounds), mean, na. rm = TRUE ))

 points rebounds
1 23.5 8.833333

Обратите внимание, что мы также можем использовать функцию is.numeric для автоматического вычисления сводной статистики для всех числовых столбцов во фрейме данных:

library(dplyr) 

#calculate mean value for every numeric column in data frame
df %>%
 summarise(across(where(is. numeric ), mean, na. rm = TRUE ))

 points rebounds
1 23.5 8.833333

Пример 3. Вычисление нескольких сводных статистических данных для нескольких столбцов

В следующем коде показано, как использовать функцию cross() для вычисления среднего значения и стандартного отклонения как для столбцов очков , так и для столбцов подборов :

library(dplyr) 

#calculate mean and standard deviation for points and rebounds columns
df %>%
 summarise(across(c(points, rebounds), list(mean=mean, sd=sd), na. rm = TRUE ))

 points_mean points_sd rebounds_mean rebounds_sd
1 23.5 6.156298 8.833333 2.562551

Примечание.Полную документацию по функции cross() можно найти здесь .

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

В следующих руководствах объясняется, как выполнять другие распространенные функции с помощью dplyr:

Как удалить строки с помощью dplyr
Как упорядочить строки с помощью dplyr
Как фильтровать по нескольким условиям с помощью dplyr