如何在 R 中更改顺序中的列名

how to change column names in sequent in R

提问人:Seyma Kalay 提问时间:11/25/2021 最后编辑:Seyma Kalay 更新时间:11/25/2021 访问量:38

问:

我有如下的摘要统计数据(从这里开始),我想相应地更改列的名称。提前非常感谢。

df <- mtcars
split_data <- split(df, df$cyl)
cols <- lapply(split_data, function(x) psych::describe(x)[c("mean", "sd")]) #["mean"])
df <- do.call(cbind, cols)
df
names(df) <- paste("cyl", names(split_data), sep = ".")
df

预期答案

       cyl.4.mean  cyl.4.sd  cyl.6.mean  cyl.6.sd   cyl.8.mean  cyl.8.sd  
mpg   26.6636364  4.5098277  19.7428571  1.4535670  15.1000000  2.5600481
cyl    4.0000000  0.0000000   6.0000000  0.0000000   8.0000000  0.0000000
disp 105.1363636 26.8715937 183.3142857 41.5624602 353.1000000 67.7713236
hp    82.6363636 20.9345300 122.2857143 24.2604911 209.2142857 50.9768855
drat   4.0709091  0.3654711   3.5857143  0.4760552   3.2292857  0.3723618
wt     2.2857273  0.5695637   3.1171429  0.3563455   3.9992143  0.7594047
qsec  19.1372727  1.6824452  17.9771429  1.7068657  16.7721429  1.1960138
vs     0.9090909  0.3015113   0.5714286  0.5345225   0.0000000  0.0000000
am     0.7272727  0.4670994   0.4285714  0.5345225   0.1428571  0.3631365
gear   4.0909091  0.5393599   3.8571429  0.6900656   3.2857143  0.7262730
carb   1.5454545  0.5222330   3.4285714  1.8126539   3.5000000  1.5566236
r for-loop lapply 数据操作

评论


答:

0赞 mharinga 11/25/2021 #1

一种选择是使用:rename_with()

library(stringr)
library(dplyr)
df <- mtcars
split_data <- split(df, df$cyl)
cols <- lapply(split_data, function(x) psych::describe(x)[c("mean", "sd")]) #["mean"])
df <- do.call(cbind, cols)

df %>% 
  rename_with(~str_c("cyl.", .), everything())
#>       cyl.4.mean   cyl.4.sd  cyl.6.mean   cyl.6.sd  cyl.8.mean   cyl.8.sd
#> mpg   26.6636364  4.5098277  19.7428571  1.4535670  15.1000000  2.5600481
#> cyl    4.0000000  0.0000000   6.0000000  0.0000000   8.0000000  0.0000000
#> disp 105.1363636 26.8715937 183.3142857 41.5624602 353.1000000 67.7713236
#> hp    82.6363636 20.9345300 122.2857143 24.2604911 209.2142857 50.9768855
#> drat   4.0709091  0.3654711   3.5857143  0.4760552   3.2292857  0.3723618
#> wt     2.2857273  0.5695637   3.1171429  0.3563455   3.9992143  0.7594047
#> qsec  19.1372727  1.6824452  17.9771429  1.7068657  16.7721429  1.1960138
#> vs     0.9090909  0.3015113   0.5714286  0.5345225   0.0000000  0.0000000
#> am     0.7272727  0.4670994   0.4285714  0.5345225   0.1428571  0.3631365
#> gear   4.0909091  0.5393599   3.8571429  0.6900656   3.2857143  0.7262730
#> carb   1.5454545  0.5222330   3.4285714  1.8126539   3.5000000  1.5566236

reprex 包 (v2.0.1) 于 2021-11-25 创建

2赞 Nechoj 11/25/2021 #2
df <- mtcars
split_data <- split(df, df$cyl)
cols <- lapply(split_data, function(x) psych::describe(x)[c("mean", "sd")]) #["mean"])
df <- do.call(cbind, cols)
df
colnames(df) <- paste("cyl", colnames(df), sep = ".")
df