r - 基于R中具有相似向量的两列对一列项目求和或聚合
问题描述
请在两列中聚合具有相似项目的行。请问有“或”功能吗?我在下面发布了一个示例数据集:
A1 <- data.frame(Animal1= c("A", "A","B","B","D") ,Animal2=c("B","D","D","A","B"),Frequency=c(2,3,1,4,5))
> A1
Animal1 Animal2 Frequency
1 A B 2
2 A D 3
3 B D 1
4 B A 4
5 D B 5
如何聚合,以便我只得到一个值,结合第 3 行和第 5 行的频率,其中第 3 行的 Animal1 为 B,Animal2 为 D,第 5 行的 Animal1 为 D,Animal2 为 B,频率为 6?
解决方案
这是一个可能的解决方案。我可能过于复杂了,但它应该会给你想要的结果。我做的第一件事是使字符串不是数据框中的因素。
A1 <- data.frame(Animal1= c("A", "A","B","B","D"), Animal2=c("B","D","D","A","B"),
Frequency=c(2,3,1,4,5), stringsAsFactors = FALSE)
A1 %>%
mutate(combined = map2_chr(Animal1, Animal2, ~paste0(sort(c(.x, .y)), collapse = ""))) %>%
group_by(combined) %>%
summarise(total = sum(Frequency))
输出
# A tibble: 3 x 2
combined total
<chr> <dbl>
1 AB 6
2 AD 3
3 BD 6
推荐阅读
- php - 如何将 ssh2_auth_pubkey_file 与 ppk 文件一起使用?
- python - 为什么 inpaint 方法不能从 IC 图像中删除文本?
- r - SQLite 对 R 中缺少的表进行故障排除
- python - 为什么我尝试导入 pyttsx 时出现错误
- javafx - 使用不同列中的 TextField 编辑 JavaFx TableView 单元格
- r - 将 rank() 应用于 data.table 和整个表的子集
- facebook - Facebook Instant Games 不提供玩家照片
- vue.js - Vue.js的vuexpress、VuePress和vue-server-renderer模块的区别和使用
- android - Android Kotlin Parcelize android 扩展给出错误
- mongodb - 如何清除 mongo DB 中多个集合的数据?