【发布时间】:2015-07-23 02:56:40
【问题描述】:
我有一个包含 25 个变量和超过 200 万个观察值的数据集。我的一个变量是几个不同“类别”的组合,我想将它们拆分到每列显示 1 个类别的位置(类似于在 stata 中的拆分)。例如:
# Name Age Number Events First
# Karen 24 8 Triathlon/IM,Marathon,10k,5k 0
# Kurt 39 2 Half-Marathon,10k 0
# Leah 18 0 1
我希望它看起来像:
# Name Age Number Events_1 Event_2 Events_3 Events_4 First
# Karen 24 8 Triathlon/IM Marathon 10k 5k 0
# Kurt 39 2 Half-Marathon 10k NA NA 0
# Leah 18 0 NA NA NA NA 1
我查看了 stackoverflow,但没有找到任何可行的方法(一切都给了我某种错误)。任何建议将不胜感激。
注意:可能并不重要,但 1 人拥有的最大类别数是 19,因此我需要创建 Event_1:Event_19
评论:以前的堆栈溢出建议使用单独的函数,但是该函数似乎不适用于我的数据集。当我输入函数时程序运行但完成后没有任何改变,没有输出,也没有错误代码。当我尝试使用其他线程中提出的其他建议时,我收到了错误消息。但是,我终于通过使用 cSplit 函数得到了它的工作。感谢您的帮助!!!
【问题讨论】:
-
另一个可能的重复:stackoverflow.com/q/18641951/2372064
-
如果您使用来自
tidyr的separate(在重复问题中回答),只需添加extra='drop'以用NA 填充不存在的。 -
cSplit来自我的“splitstackshape”包应该可以满足您的要求。 -
由于某种原因,单独的包不起作用,不会出现错误,但是当程序停止运行时,数据集保持不变并且没有输出。