如何将 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)
会给你一个列表
我已经尝试了一些解决方案,但它们不适合这个用例。我有 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)
会给你一个列表