如何根据特定的行值重命名分组 dplyr tibble 中的列?下图显示了我的 tibble 处理前的样子以及处理后的样子。
我试过下面的代码,但没能写出能够从“名称”列灵活声明新列名称的列重命名函数。
library(dplyr)
df <- data.frame(
"splitvar"=c(1,1,1,2,2,3,3,3,3),
"value"=c(1,4,2,5,6,9,11,13,12),
"name"=c("Harold","Harold","Harold","Jane","Jane","George","George","George","George"),
stringsAsFactors=F
)
grouped_tbl <- df %>%
group_by( splitvar ) %>%
eval(parse(
paste0("rename(",unique(name)," = value)")
))
最佳答案
像这样:
library(tidyverse)
df %>%
split(.$splitvar) %>%
map(~rename(., !!unique(.$name) := "value"))
我花了一些时间来理解 quosure 的东西,但试着看看 programming with dplyr
代码的输出是:
$`1`
splitvar Harold name
1 1 1 Harold
2 1 4 Harold
3 1 2 Harold
$`2`
splitvar Jane name
4 2 5 Jane
5 2 6 Jane
$`3`
splitvar George name
6 3 9 George
7 3 11 George
8 3 13 George
9 3 12 George
关于按行值重命名分组的 tibble 中的列 (dplyr),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47835867/