【发布时间】:2017-06-18 08:03:26
【问题描述】:
我的数据如下:
IDnum zipcode City County State
10011 36006 Billingsley Autauga AL
10011 36022 Deatsville Autauga AL
10011 36051 Marbury Autauga AL
10011 36051 Prattville Autauga AL
10011 36066 Prattville Autauga AL
10011 36067 Verbena Autauga AL
10011 36091 Selma Autauga AL
10011 36703 Jones Autauga AL
10011 36749 Plantersville Autauga AL
10011 36758 Uriah Autauga AL
10011 36480 Atmore Autauga AL
10011 36502 Bon Secour Autauga AL
我有一个邮政编码列表、它们所包含的城市以及它们所在的县/州。IDnum = 县和州的数字值,组合在一起。列表是你现在看到的格式,我需要将它从长到宽/垂直到水平重塑,其中 IDnum 变量成为唯一标识符,所有其他可能的值组合成为宽变量。
IDnum zip1 city1 county1 state1 zip2 city2 county2
10011 36006 Billingsley Autauga AL 36022 Deatsville Autauga
这只是数据集的示例,它包含美国的每个 zip 并包含更多变量。我见过与此类似的其他问题和答案,但不是几乎每一列都有多个值。
SPSS 和 STATA 中有一些命令可以通过这种方式重塑数据,在 SPSS 中,我可以运行 Restructure/Cases to Vars 命令,将我的初始数据集中的 11 个变量变成大约 1750 个变量,b/c 一个县有超过 290 个拉链它复制了大多数其他变量 290 多次。这将创建许多空白,但我需要将其重新塑造成一个非常长的水平文件。
我查看了 reshape 和 reshape2,并被“默认长度”错误消息挂断。我确实得到了melt/dcast来排序工作,但这会创建一个变量,它是所有值的列表,而不是为每个值创建变量。
melted_dupes <- melt(zip_code_list_dupes, id.vars= c("IDnum"))
HRZ_dupes <- dcast(melted_dupes, IDnum ~ variable, fun.aggregate = list)
我尝试过 tidyr 和 dplyr,但在语法上迷路了。有点惊讶,在其他包中没有类似于内置命令的命令数据,让我假设有,但我还没弄明白。
感谢任何帮助。
【问题讨论】:
标签: r reshape reshape2 data-management