gpt4 book ai didi

使用数据框标题/名称重命名列名

转载 作者:行者123 更新时间:2023-12-04 17:07:24 26 4
gpt4 key购买 nike

我有一个名为“Something”的数据框。我正在使用 summarise 对数字列之一进行聚合,并且我希望该列的名称包含“Something” - 列名称中的数据框标题。

例子:

    temp <- Something %>% 
group_by(Month) %>%
summarise(avg_score=mean(score))

但我想将聚合列命名为“avg_Something_score”。这样做有意义吗?

最佳答案

我们可以使用dplyr的devel版本(即将发布 0.6.0 )与 quosure 一起做这件事秒

library(dplyr)
myFun <- function(data, group, value){
dataN <- quo_name(enquo(data))
group <- enquo(group)
value <- enquo(value)

newName <- paste0("avg_", dataN, "_", quo_name(value))
data %>%
group_by(!!group) %>%
summarise(!!newName := mean(!!value))
}

myFun(mtcars, cyl, mpg)
# A tibble: 3 × 2
# cyl avg_mtcars_mpg
# <dbl> <dbl>
#1 4 26.66364
#2 6 19.74286
#3 8 15.10000

myFun(iris, Species, Petal.Width)
# A tibble: 3 × 2
# Species avg_iris_Petal.Width
# <fctr> <dbl>
#1 setosa 0.246
#2 versicolor 1.326
#3 virginica 2.026

在这里, enquo接受输入参数,如 substitute来自 base R并转换为 quosure , 与 quo_name ,我们可以将其转换为字符串,计算 quosure通过在 !! 内取消引用( UQgroup_by/summarise/mutate )等。 分配的 lhs ( := ) 上的列名也可以通过取消引用来评估以获得感兴趣的列

关于使用数据框标题/名称重命名列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43546765/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com