如何在向dplyr中的函数传递未知数量的变量时更广泛地使用pivot_
基于我前面的问题,我希望能够使用pivot_更广泛地引用一个专栏,但不清楚语法 可复制示例 例如,假设我们想要创建一个函数,该函数为我们提供以下等价的输出,但具有一个可变的数字输入到组_by:如何在向dplyr中的函数传递未知数量的变量时更广泛地使用pivot_,r,dplyr,pivot,tidyverse,R,Dplyr,Pivot,Tidyverse,基于我前面的问题,我希望能够使用pivot_更广泛地引用一个专栏,但不清楚语法 可复制示例 例如,假设我们想要创建一个函数,该函数为我们提供以下等价的输出,但具有一个可变的数字输入到组_by: # String inputs grp1 <- "cyl" grp2 <- "carb" # 2 variables input mtcars %>% group_by(.data[[grp1]], .data[[grp2]]) %>% summarize(mean_
# String inputs
grp1 <- "cyl"
grp2 <- "carb"
# 2 variables input
mtcars %>%
group_by(.data[[grp1]], .data[[grp2]]) %>%
summarize(mean_hp = mean(hp, na.rm = TRUE)) %>%
pivot_wider(., names_from = .data[[grp1]], values_from = mean_hp)
# A tibble: 6 x 4
carb `4` `6` `8`
<dbl> <dbl> <dbl> <dbl>
1 1 77.4 108. NA
2 2 87 NA 162.
3 4 NA 116. 234
4 6 NA 175 NA
5 3 NA NA 180
6 8 NA NA 335
#字符串输入
grp1%
汇总(平均值=平均值(hp,na.rm=真))%>%
轴宽(,名称从=.data[[grp1]],值从=平均值从=hp)
#一个tibble:6x4
碳水化合物'4``6``8`
1 1 77.4 108. NA
287NA 162。
3 4 NA 116。234
4 6 NA 175 NA
5 3 NA 180
6 8 NA 335
为了获得可变数量的输入(即,仅grp1、grp1、grp2和GRP3),前面的问题指出,解决方案是使用如下椭圆:
# String inputs
grp1 <- "cyl"
grp2 <- "carb"
# Create simple function
car_fx <- function(df, ...) {
output <- df %>%
group_by_at(c(...)) %>%
summarize(mean_hp = mean(hp, na.rm = TRUE))
}
# Works with variable number of inputs
(car_fx(mtcars, grp1, grp2))
(car_fx(mtcars, grp1))
#字符串输入
grp1我认为这应该有效
car_fx <- function(df, ...) {
output <- df %>%
group_by_at(c(...)) %>%
summarize(mean_hp = mean(hp, na.rm = TRUE)) %>%
pivot_wider(., names_from = c(...)[1], values_from = mean_hp)
output
}
car\u fx%
汇总(平均值=平均值(hp,na.rm=真))%>%
枢轴宽度(,名称从=c(…)[1],值从=mean从=hp)
输出
}
您可以根据自己的喜好更改[1],如果您需要在3个小组中进行特定的行为,欢迎来到if else hell,祝您好运,这正是我所需要的。谢谢。没问题,请考虑投票。
car_fx <- function(df, ...) {
output <- df %>%
group_by_at(c(...)) %>%
summarize(mean_hp = mean(hp, na.rm = TRUE)) %>%
pivot_wider(., names_from = c(...)[1], values_from = mean_hp)
output
}