R 在嵌套数据帧中,如何仅计算每个唯一ID的最高级别的分类变量
我有这样一个数据集:R 在嵌套数据帧中,如何仅计算每个唯一ID的最高级别的分类变量,r,nested,R,Nested,我有这样一个数据集: ID Action id1 A1 id1 A2 id1 A2 id2 A3 id2 A3 id3 A1 .... 行动是一个分类变量:A3>A2>A1 我的问题是如何在R中只计算每个不同ID的最高操作级别 要做到这一点,我认为将会有与唯一ID数量一样多的操作。每个ID只与一个操作关联——最高级别。新的数据帧将如下所示 ID Action ID1 A2 ID2 A3 如果我们为A
ID Action
id1 A1
id1 A2
id1 A2
id2 A3
id2 A3
id3 A1
....
行动是一个分类变量:A3>A2>A1
我的问题是如何在R中只计算每个不同ID的最高操作级别
要做到这一点,我认为将会有与唯一ID数量一样多的操作。每个ID只与一个操作关联——最高级别。新的数据帧将如下所示
ID Action
ID1 A2
ID2 A3
如果我们为
Action
列创建一个有序因子,我们可以为每个ID
取max
值
使用base R,我们可以使用
aggregate(Action~ID, transform(df,
Action = factor(Action, levels = paste0('A', 1:3), ordered = TRUE)), max)
# ID Action
#1 id1 A2
#2 id2 A3
或在dplyr
library(dplyr)
df %>%
mutate(Action = factor(Action, levels = paste0('A', 1:3), ordered = TRUE)) %>%
group_by(ID) %>%
summarise(Action = max(Action))
数据
df <- structure(list(ID = structure(c(1L, 1L, 1L, 2L, 2L), .Label = c("id1",
"id2", "id3"), class = "factor"), Action = structure(c(1L, 2L,
2L, 3L, 3L), .Label = c("A1", "A2", "A3"), class = "factor")), row.names = c(NA,
5L), class = "data.frame")
df