我想要简化一个大型数据集,但我目前遇到一些麻烦。 下表显示了原始目标组合。 count列表示例如A到B的出现次数。
@Mapper
public interface PolicyMapper {
List<Policy> findPolicy(@ParametersAutoBinding PolicyFilterDto filter);
)
我遇到的问题是,例如A到C(1),实际上与C到A(3)相同。因为方向对我来说并不重要,只有A和C之间存在联系,我想知道如何才能简单地使用A到C(4)。
问题是我有一个400级的因子,所以我不能手动完成。是否有dplyr或类似的东西能为我解决这个问题?
答案 0 :(得分:2)
df[1:2] <- t(apply(df[1:2], 1, sort))
aggregate(count ~ From + To, df, sum)
结果:
From To count
1 A B 2
2 A C 4
3 B C 1
答案 1 :(得分:0)
以下是使用aggregate
,sort
,paste
和mapply
的基本R方法。
with(df, aggregate(count,
list(route=mapply(function(x, y) paste(sort(c(x, y)), collapse=" - "),
From, To)), sum))
route x
1 A - B 2
2 A - C 4
3 B - C 1
在这里,mapply
从from和to变量中获取成对元素,对它们进行排序并将它们粘贴到具有collapse = TRUE的单个字符串中。结果字符串向量在aggregate
中用于对观察值进行分组并对计数值求和。 with
减少了输入。