如何用R语言对Dataframe进行Pivot重塑以匹配目标格式
R语言实现Dataframe结构转换(基于Pivot操作)
首先模拟符合你描述的原始数据结构:
library(tidyverse) # 模拟原始数据(ID列+带`-`的特征列,列值为字母) original_df <- tibble( ID = c("X1", "X2", "X3"), "shape-circle" = c("Y", "N", "Y"), "shape-square" = c("N", "Y", "N"), "material-plastic" = c("Y", "Y", "N"), "material-metal" = c("N", "N", "Y") )
针对你需要的目标格式,通过两次pivot操作+列名拆分即可实现:
# 转换为目标格式 target_df <- original_df %>% # 第一步:将宽表转成长表,收拢特征列名与对应值 pivot_longer( cols = -ID, names_to = "combined_feature", values_to = "feature_value" ) %>% # 第二步:按`-`拆分合并的特征列名为两个独立字段 separate( col = combined_feature, into = c("feature_type", "feature_detail"), sep = "-" ) %>% # 第三步:按需转回宽表(若目标格式是将具体特征项作为列) pivot_wider( names_from = feature_detail, values_from = feature_value )
关键步骤说明
pivot_longer:把分散在多列的特征数据收拢为长表结构,为拆分列名做准备separate:利用列名中的-分隔符,将合并的特征信息拆分为「特征类别」和「具体特征项」pivot_wider:如果目标格式要求把具体特征项作为列(比如circle、square作为列)则执行此步;若目标是纯长表,可直接省略
内容的提问来源于stack exchange,提问作者Lulu
相关产品推荐
相关产品推荐

