Как использовать функцию 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

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.