Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 在嵌套数据帧中,如何仅计算每个唯一ID的最高级别的分类变量_R_Nested - Fatal编程技术网

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