基于共同值合并大数据集中的行

问题描述 投票:0回答:2

我有54,000行和500列的数据,但是特定列“策略号”中的许多值具有相同的策略号,因为数据集包括货币值随时发生变化的时间(但最重要的100列具有相同的值)。 (主数据集命名为Home)

数据集示例:

Total Claim    Claim number  Type of Loss   Date  .....  

$45,000          3500           Fire         2001 ....

$45,000          3500           Fire         2002 ....

$45,000          3500           Water        2001 ....

我想要的是将所有具有相同编号的所有声明作为一行连接在一起,并且如果一列具有不同的值,则将它们与中间的逗号合并。

我想要的结果示例:

Total Claim    Claim number   Type of Loss   Date.....  

$45,000          3500          Fire, Water    2001, 2002  ...

我已经尝试过聚合,合并和rbind,但是我认为我编码错了,因为它不起作用。下面是我尝试过的所有不同代码,没有产生任何效果。

# Creating a dataset where all the same policy numbers are together

SamePolicy <- aggregate(Home[,3:446], list(Home[,2]), function(x) paste0(unique(x)))
SamePolciy <- merge(data.frame(Home), by="Claim_Number")
SamePolicy <- merge(Home, Home$Total_Claim, by="Claim_Number")
SamePolicy <- aggregate(.~Home$Claim_Number, df, function(x) paste0(unique(x)))

编辑:我有很多列,所以如果可能的话,我不想专门调用每个列进行编辑?另外,我想删除列中的重复项,所以我只希望2001,2002而不是输出2001,2002,2001。

r merge bigdata aggregate
2个回答
1
投票

如果您愿意使用dplyr,这是一种选择。将您不想折叠的列放到group_by中,所有剩余的列将被折叠。


0
投票

这里是可能的data.table解决方案:

© www.soinside.com 2019 - 2024. All rights reserved.