使用pivot_wider转换非均匀类别DataFrame时数据错位问题求助
解决pivot_wider转换宽表后数据错位的问题
问题场景
通过爬虫获取的DataFrame,使用pivot_wider转换为宽表时出现数据错位,其中bains/douches列数据错位明显。核心原因是缺少唯一分组标识来匹配同一条记录的不同字段值,加上types列各唯一值出现次数不一致(例如price出现12次,étage出现6次),导致字段值无法正确对应。


解决方案
1. 添加唯一分组ID
爬虫抓取的数据通常按记录顺序排列,每条记录包含一组types字段。根据字段出现的规律生成分组ID,确保同一记录的所有字段归为同一组:
library(tidyverse) # 假设每条记录包含固定数量的types值(比如3个,根据实际字段数量调整) df <- df %>% mutate(group_id = floor((row_number() - 1) / 3)) # 利用行号生成分组ID
如果不确定每条记录的字段数量,可以先统计各types的出现次数,找到字段的重复周期;若存在字段缺失,需先清洗补全后再分组。
2. 带分组ID执行pivot_wider
以group_id作为分组依据,确保同一条记录的字段值正确匹配:
df_wide <- df %>% pivot_wider( id_cols = group_id, names_from = types, values_from = 你的值列名称 # 替换为存储字段值的实际列名 )
额外建议
检查爬虫逻辑,确保抓取时每条记录的字段完整且顺序一致,从源头避免数据缺失或错位的问题。
内容的提问来源于stack exchange,提问作者lnasal
相关产品推荐
相关产品推荐

