如何在R中为分组统计结果按规则修改列名
解决方案
你当前代码的问题在于列名拼接逻辑只关联了气缸分组标识,没有带上对应的统计指标(mean/sd)后缀,调整列名赋值逻辑即可实现预期效果,修改后的完整代码如下:
df <- mtcars split_data <- split(df, df$cyl) cols <- lapply(split_data, function(x) psych::describe(x)[c("mean", "sd")]) df <- do.call(cbind, cols) # 调整列名拼接逻辑,按分组+统计量的规则生成列名 names(df) <- paste("cyl", rep(names(split_data), each = 2), c("mean", "sd"), 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
内容的提问来源于stack exchange,提问作者symkly
相关产品推荐
相关产品推荐

