Hom*_*son 3 sorting group-by r
我在 R 中有以下数据框:
ID = c(rep(1,5),rep(2,3),rep(3,2),rep(4,6));ID
VAR = c("A","A","A","A","B","C","C","D",
"E","E","F","A","B","F","C","F");VAR
CATEGORY = c("ANE","ANE","ANA","ANB","ANE","BOO","BOA","BOO",
"CAT","CAT","DOG","ANE","ANE","DOG","FUT","DOG");CATEGORY
DATA = data.frame(ID,VAR,CATEGORY);DATA
Run Code Online (Sandbox Code Playgroud)
如下表所示:
| ID | VAR | 类别 |
|---|---|---|
| 1 | A | 安尼 |
| 1 | A | 安尼 |
| 1 | A | 全日空航空公司 |
| 1 | A | ANB |
| 1 | 乙 | 安尼 |
| 2 | C | 嘘声 |
| 2 | C | 蟒蛇 |
| 2 | D | 嘘声 |
| 3 | 乙 | 猫 |
| 3 | 乙 | 猫 |
| 4 | F | 狗 |
| 4 | A | 安尼 |
| 4 | 乙 | 安尼 |
| 4 | F | 狗 |
| 4 | C | 氟尿嘧啶 |
| 4 | F | 狗 |
给定 RI 中上述数据帧的理想输出希望是这样的:
| ID | 文本 | 类别 |
|---|---|---|
| 1 | A | 安尼 |
| 2 | C | 嘘声 |
| 3 | 乙 | 猫 |
| 4 | F | 狗 |
更具体地说:我希望 ID 为 1 来搜索 VAR 列中最常见的值(A),然后搜索与最常见值 A 相关的 CATEGORY 列中最常见的值(ANE),依此类推。
我怎样才能在 R 中做到这一点?想象一下这是一个示例。我的真实数据框包含 850.000 行并具有 14000 个唯一 ID。
另一种dplyr策略使用countand slice:
library(dplyr)
DATA %>%
group_by(ID) %>%
count(VAR, CATEGORY) %>%
slice(which.max(n)) %>%
select(-n)
Run Code Online (Sandbox Code Playgroud)
ID VAR CATEGORY
<dbl> <chr> <chr>
1 1 A ANE
2 2 C BOA
3 3 E CAT
4 4 F DOG
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
853 次 |
| 最近记录: |