【发布时间】:2013-02-20 16:36:22
【问题描述】:
伙计们,
我被以下挑战难住了。我有一个如下所示的数据集:
BuyerID Fruit.1 Fruit.2 Fruit.3 Amount.1 Amount.2 Amount.3
879 Banana Apple 4 3
765 Strawberry Apple Orange 1 2 4
123 Orange Banana 1 1 1
11 Strawberry 3
773 Kiwi Banana 1 2
我想做的是简化数据(如果可能的话)并折叠“Fruit”和“Amount”变量
BuyerID Fruit Amount Total Count
879 "Banana" "Apple" 4 3 7 2
765 "Strawberry" "Apple" "Orange" 1 2 4 7 3
123 "Orange" "Banana" 1 1 1 3 2
11 "Strawberry" 3 3 1
773 "Kiwi" "Banana" 1 2 3 2
我尝试过使用 c() 和 rbind(),但它们没有产生我想要的结果 - 我在这里尝试了提示:data.frame rows to a list,但我不太确定这是否是最好的方法简化我的数据。
这大概是为了让我更容易处理更少的变量来计算某些项目的出现(例如 60% 的买家购买香蕉)。
我希望这是可行的 - 我也愿意接受任何建议。任何解决方案表示赞赏!
谢谢。
【问题讨论】:
-
您可能想要使用
data.table包:data.frames 每个单元格只能处理一个值。 -
这看起来是经典的从宽到长
reshape解决方案的不错选择。 @AnandaMahto - 你在哪里? ;-) -
@SeñorO --
data.frames也可以有列表,它不仅仅是一个 data.table 的东西。定义时你只需要有点创意。例如z <- data.frame(x = 1:5, y = I(lapply(seq_len(5),seq_len)) -
以及列表列的 SO 参考 stackoverflow.com/questions/9547518/…
-
@SeñorO 我的回答演示了使用
data.frame单元处理向量以及为什么可以这样做(请注意这是一个坏主意)
标签: r list variables dataframe