如何将 data.frame Long 转换为 Wide,但不使用因子和非等长关联

How to transform a data.frame Long to Wide, but not using factors and not equal length associations

我已经尝试了一些解决方案,但它们不适合这个用例。我有 32 GB 的 RAM,但在使用 cast、dcast 或 spread 时我仍然遇到了天花板。我循环查找一个列表,花了超过 24 小时才完成我拥有的 4200 万行中的一部分。我想要一个使用 apply 系列的基本解决方案,但我知道这是否行不通……我觉得行不通,因为我必须查询下一行以确定 addressID 是否匹配(或者 data.frame 未排序,它必须搜索列的其余部分)。

这是一个(排序的)示例 data.frame:

addressID   MAKE 
104554      LINCOLN                             
104554      LINCOLN                             
104628      HYUNDAI                             
104628      TOYOTA                              
104628      SUBARU                              
104677      HYUNDAI                             
104677      HYUNDAI

我想要长格式或列表,这样我就有了:

$`104554`
[1] LINCOLN LINCOLN

$`104628`
[1] HYUNDAI TOYOTA SUBARU

$`104677`
[1] HYUNDAI HYUNDAI

我要找一些有 6 辆车的地址。我至少有 45 辆汽车,所以我不希望有 2000 万 X 50 列 matrix/data。按照 dcast、cast、spread 等似乎需要的方式来制作这个 运行(由于 RAM 限制,它们无法正常工作)。我觉得这应该是一个简单的解决方案,但它逃避了我。

aggregate(addressID ~ MAKE, data = df, c) 为你工作?

或者, by(df, df[,"addressID"], c) 会给你一个列表