我有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。
如果您愿意使用dplyr
,这是一种选择。将您不想折叠的列放到group_by
中,所有剩余的列将被折叠。
这里是可能的data.table
解决方案: