我的数据集包含:
- 我想要删除的重复ID(第
ID1
和ID2
列) - 列
List
可以包含重复项之间不同的规范(type: string
), - 以及2列
V1
和V2
,其中包含我希望在重复项之间添加sum
的值(type: int
).
我的数据集的一个简单示例是:
df <- data.frame(
ID1 = c('A','A','B','C','D','D'),
ID2 = c('A','A','B1','C1','DE','DE'),
List = c('LA','LA','LB','LC','L1D','L2D'),
V1 = c(1, 0, 1, 1, 1, 1),
V2 = c(0, 1, 0, 0, 1, 1),
stringsAsFactors = FALSE
)
> df
ID1 ID2 List V1 V2
1 A A LA 1 0
2 A A LA 0 1
3 B B1 LB 1 0
4 C C1 LC 1 0
5 D DE L1D 1 1
6 D DE L2D 1 1
我想以这个结束:
> df_final
ID1 ID2 List_1 List_2 V1 V2
1 A A LA LA 1 1
3 B B1 LB 1 0
4 C C1 LC 1 0
5 D DE L1D L2D 2 2
所以我的 idea 是首先dcast List
专栏:
df <- df %>%
group_by(ID1, ID2) %>%
mutate(Index = row_number(List))
然后用类似的内容进行dcast:
df <- dcast(df, ID1+ID2 +V1 + V2 ~ Index, value.var = "List", fun.aggregate =sum)
但当还涉及因素时(这是有道理的),它无法处理sum
.如何才能最好地做到这一点才能达到df_final
?