如何在R中将多行dataframe转换为列名拼接的单行宽格式数据
R语言实现长表转指定格式宽表的方案
1 tidyverse 实现(推荐,代码简洁易读)
依赖tidyverse包中的pivot_wider函数,直接通过参数自定义列名规则:
# 加载包 library(tidyverse) # 示例数据构造 whatever <- data.frame(model=c("Nug", "Ste"), A=c(1,2), B=c(3,4), C=c(5,6)) # 转换操作 target_df <- whatever %>% pivot_wider( names_from = model, values_from = c(A, B, C), names_glue = "{model}.{.value}" )
执行后target_df即为1行6列的目标数据框,列名、取值完全符合要求。
2 原生base R实现(无需安装第三方包)
使用R自带的reshape函数实现,调整列名即可:
# 示例数据构造 whatever <- data.frame(model=c("Nug", "Ste"), A=c(1,2), B=c(3,4), C=c(5,6)) # 宽表转换 target_df <- reshape(whatever, idvar = NULL, timevar = "model", direction = "wide", sep = ".") # 修正列名顺序为「model值.原数值列名」 names(target_df) <- sub("(.*)\\.(.*)", "\\2.\\1", names(target_df))
内容的提问来源于stack exchange,提问作者Creater Cyfire
相关产品推荐
相关产品推荐

