r - 将数据框 Group BY 代码放入 R 中的函数中
问题描述
我在 R 中有一个代码,我在其中处理多个数据帧。
数据框格式示例:
ClientID Group CountC
X1 A 3
R3 B 2
D4 A 1
T5 A 7
H0 B 5
其他数据框具有相同的 2 列,但CountC
有所不同。
对于每个数据框,我都有一个通用代码,它按组 / 计算分位数,然后旋转数据框的形式:
quantileByGroup <-
df %>%
group_by(Group) %>%
summarize(Q25 = quantile(CountC, probs = .25),
Q50 = quantile(CountC, probs = .5),
Q75 = quantile(CountC, probs = .75),
Q100 = quantile(CountC, probs = 1))
quantileByGroupFinal <- pivot_longer(quantileByGroup,
cols = c(2,3,4,5),
names_to = "name",
values_to = "value")
为了避免每次都重复相同的代码,我想把这段代码放在一个函数中。
但是,当我尝试时,这很复杂,尤其是这部分:
quantileByGroup <-
df %>%
group_by(Group) %>%
summarize(Q25 = quantile(CountC, probs = .25),
Q50 = quantile(CountC, probs = .5),
Q75 = quantile(CountC, probs = .75),
Q100 = quantile(CountC, probs = 1))
因为不可能在函数中传递列名Group
和CountC
作为参数。
有没有办法做到这一点?
谢谢
解决方案
f <- function(.data, .group, .summarize)
{
.data %>%
dplyr::group_by({{.group}}) %>%
dplyr::summarise( "{{.summarize}}_Q25" := quantile({{.summarize}}, probs = .25),
"{{.summarize}}_Q50" := quantile({{.summarize}}, probs = .5),
"{{.summarize}}_Q75" := quantile({{.summarize}}, probs = .75),
"{{.summarize}}_Q100" := quantile({{.summarize}}, probs = 1)) %>%
dplyr::ungroup() %>%
tidyr::pivot_longer(-{{.group}}) %>%
return()
}
并调用:
df %>%
f(.group = Group, .summarize = CountC)
推荐阅读
- rust - 如何错误处理字符串到浮点数的转换
- python - Pandas read_html() 没有在表格中给出我的所有条目
- c++ - 将指向任何类型的指针转换为用于算术的 char 指针是否安全且可移植?
- php - WP 管理员 ajax 返回 404
- postgresql - 如何使用 Circe 从 Doobie Scala PostgreSQL 数据库中读取 JSON?
- firebase - Firebase 身份验证上的 Flutter 应用程序错误
- windows-subsystem-for-linux - 如何将 vdhx 文件注册为 WSL 2?
- sql - SQL 唯一标识符到 varchar
- c# - 窗口窗体最顶层有什么区别?C#
- spring-boot - 在 Apache Kafka java 中实现请求响应