gpt4 book ai didi

regex - R dplyr : rename variables using string functions

转载 作者:行者123 更新时间:2023-12-03 06:43:20 24 4
gpt4 key购买 nike

(有些相关的问题:Enter new column names as string in dplyr's rename function)

dplyr 链 (%>%) 的中间,我想用旧名称的函数替换多个列名称(使用 tolower gsub 等)

library(tidyr); library(dplyr)
data(iris)
# This is what I want to do, but I'd like to use dplyr syntax
names(iris) <- tolower( gsub("\\.", "_", names(iris) ) )
glimpse(iris, 60)
# Observations: 150
# Variables:
# $ sepal_length (dbl) 5.1, 4.9, 4.7, 4.6, 5.0, 5.4, 4.6,...
# $ sepal_width (dbl) 3.5, 3.0, 3.2, 3.1, 3.6, 3.9, 3.4,...
# $ petal_length (dbl) 1.4, 1.4, 1.3, 1.5, 1.4, 1.7, 1.4,...
# $ petal_width (dbl) 0.2, 0.2, 0.2, 0.2, 0.2, 0.4, 0.3,...
# $ species (fctr) setosa, setosa, setosa, setosa, s...

# the rest of the chain:
iris %>% gather(measurement, value, -species) %>%
group_by(species,measurement) %>%
summarise(avg_value = mean(value))

我看到 ?rename将参数 replace作为 命名字符向量,其中新名称作为值,旧名称作为名称。

所以我尝试了:

iris %>% rename(replace=c(names(iris)=tolower( gsub("\\.", "_", names(iris) ) )  ))

但是(a)返回错误:iris %>% ...中出现意外的'='并且(b)需要按名称引用链中上一个操作的数据帧,这在我的实际用例中我做不到。

iris %>% 
rename(replace=c( )) %>% # ideally the fix would go here
gather(measurement, value, -species) %>%
group_by(species,measurement) %>%
summarise(avg_value = mean(value)) # I realize I could mutate down here
# instead, once the column names turn into values,
# but that's not the point
# ---- Desired output looks like: -------
# Source: local data frame [12 x 3]
# Groups: species
#
# species measurement avg_value
# 1 setosa sepal_length 5.006
# 2 setosa sepal_width 3.428
# 3 setosa petal_length 1.462
# 4 setosa petal_width 0.246
# 5 versicolor sepal_length 5.936
# 6 versicolor sepal_width 2.770
# ... etc ....

最佳答案

这是一个很晚的答案,2017 年 5 月

dplyr 0.5.0.9004 开始,即将成为 0.6.0,有许多重命名列的新方法,与 maggritr 管道运算符 %>% ,已添加到包中。

这些功能是:

  • 重命名_全部
  • 重命名_if
  • 重命名

使用这些函数的方法有很多种,但与您的问题相关的使用 stringr 包的方法如下:

df <- df %>%
rename_all(
funs(
stringr::str_to_lower(.) %>%
stringr::str_replace_all(., '\\.', '_')
)
)

所以,继续安装管道:)(没有双关语)。

关于regex - R dplyr : rename variables using string functions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30382908/

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