【问题标题】:How to use dplyr::rename_all() to add count values to column names?如何使用 dplyr::rename_all() 将计数值添加到列名?
【发布时间】:2019-01-06 21:41:53
【问题描述】:

也许我遗漏了一些明显的东西,但我只想重命名我的所有列,如下所示

library(dplyr); library(tibble); library(datasets)

(df <- datasets::VADeaths %>% as.data.frame %>%
  tibble::rownames_to_column() %>% rename(Age = rowname))
#>     Age Rural Male Rural Female Urban Male Urban Female
#> 1 50-54       11.7          8.7       15.4          8.4
#> 2 55-59       18.1         11.7       24.3         13.6
#> 3 60-64       26.9         20.3       37.0         19.3
#> 4 65-69       41.0         30.9       54.6         35.1
#> 5 70-74       66.0         54.3       71.1         50.0


 df %>% rename(`Rural Male (n = 163.7)` = `Rural Male`)

 #>  Age ID  Rural Male (n = 163.7) Rural Female Urban Male Urban Female
 #> 1 50-54                   11.7          8.7       15.4          8.4
 #> 2 55-59                   18.1         11.7       24.3         13.6
 #> 3 60-64                   26.9         20.3       37.0         19.3
 #> 4 65-69                   41.0         30.9       54.6         35.1
 #> 5 70-74                   66.0         54.3       71.1         50.0

如何使用 rename_all 添加所有列总和(年龄 ID 除外)? 即,像

df %>% rename_all(funs(function(x) = paste(variable, " (n = ", sum(variable), ")")))

https://dplyr.tidyverse.org/reference/select_all.html

【问题讨论】:

  • 计数还是总和?您想如何对分类的 Age 求和?
  • 年龄除外;年龄作为ID,我会编辑帖子

标签: r dplyr rename tidyverse


【解决方案1】:
cols <- setdiff(names(df), "Age")
rename_at(df, cols, funs(paste0(., " (n = ", colSums(df[.]), ")")))

    Age Rural_Male (n = 163.7) Rural_Female (n = 125.9) Urban_Male (n = 202.4) Urban_Female (n = 126.4)
1 50-54                   11.7                      8.7                   15.4                      8.4
2 55-59                   18.1                     11.7                   24.3                     13.6
3 60-64                   26.9                     20.3                   37.0                     19.3
4 65-69                   41.0                     30.9                   54.6                     35.1
5 70-74                   66.0                     54.3                   71.1                     50.0

可重复的数据:

df <- data.frame(
  Age = c("50-54", "55-59", "60-64", "65-69", "70-74"), 
  Rural_Male = c(11.7, 18.1, 26.9, 41, 66), 
  Rural_Female = c(8.7, 11.7, 20.3, 30.9, 54.3), 
  Urban_Male = c(15.4, 24.3, 37, 54.6, 71.1),
  Urban_Female = c(8.4, 13.6, 19.3, 35.1, 50)
)

【讨论】:

    猜你喜欢
    • 2021-10-22
    • 1970-01-01
    • 2014-03-16
    • 1970-01-01
    • 2020-10-20
    • 1970-01-01
    • 1970-01-01
    • 2018-01-14
    相关资源
    最近更新 更多