如何利用tidyverse包在R中重构数据框:将行变量转为独立列?
使用tidyverse实现数据格式转换的方案
要完成你需要的数据格式转换,需要结合tidyverse中的两个核心函数:pivot_longer() 和 pivot_wider(),具体操作如下:
步骤说明
- 转长格式拆分年份列:用
pivot_longer()把原数据中以年份命名的列(2015、2016)转换为长格式,生成Year(存储年份)和Value(对应年份的数值)两列。 - 转宽格式拆分食物类别:用
pivot_wider()把Food列里的不同类别(Banana、Hotdog)拆成单独的列,匹配对应年份的数值。
代码示例
假设你的原始数据框名为df,执行以下代码即可完成转换:
library(tidyverse) df_transformed <- df %>% # 处理年份列,转长格式 pivot_longer( cols = c(`2015`, `2016`), # 指定要转换的年份列(数字列名需用反引号包裹) names_to = "Year", # 新列名,存储原年份列的列名 values_to = "Value" # 新列名,存储原年份列的数值 ) %>% # 处理食物类别,转宽格式 pivot_wider( names_from = Food, # 用Food列的取值作为新列名 values_from = Value # 用Value列的数值填充新列 )
转换后结果
执行代码后得到的数据框结构如下:
# Animal Year Banana Hotdog Monkey 2015 54 43 Monkey 2016 65 76 ## # ... with 54 more rows
内容的提问来源于stack exchange,提问作者Joseph Carthof
相关产品推荐
相关产品推荐

