如何在R中正确透视数据框,避免生成列表列?
数据透视解决方案
你可以使用tidyr包中的pivot_wider()函数实现需求,该函数专门用于将长格式数据转换为宽格式数据。
1. 加载依赖包
先确保安装并加载tidyr(属于tidyverse套件,也可单独加载):
library(tidyr)
2. 执行透视操作
指定site为行标识,n_visit为列名来源,n为填充值,同时处理缺失值:
pivoted_data <- data %>% pivot_wider( id_cols = site, names_from = n_visit, values_from = n, values_fill = 0, # 缺失的visit记录用0填充,保留NA可删除此参数 values_fn = sum # 同一site同一次visit有多条记录时,求和合并 )
结果示例
执行后将得到目标结构的数据框,示例片段如下:
| site | visit_1 | visit_2 | visit_3 |
|---|---|---|---|
| tryon_weber_obs_1 | 0 | 0 | 0 |
| tryon_weber_obs_2 | 0 | 0 | 0 |
| rv_pond_obs_1 | 10 | 1 | 8 |
| tuttle_pond_obs_1 | 5 | 6 | 5 |
内容的提问来源于stack exchange,提问作者Eizy
相关产品推荐
相关产品推荐

