Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.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 按列分组-订单问题_R_Dplyr - Fatal编程技术网

R 按列分组-订单问题

R 按列分组-订单问题,r,dplyr,R,Dplyr,我对按列分组后的总结有意见。我有一个如下所示的数据集: ID KEY 320249T 75 320249T 59 320249T 83 320249T 78 320249T 42 320249T 78 320249T 42 (数据有大约23个其他列和大约200万行)。数据已按数据排序,即特定ID的第一行是最新的,最后一行是第一行。我想保留最重复的密钥,所以我保留(df是我的数据集): 在两个(或多个)键具

我对按列分组后的总结有意见。我有一个如下所示的数据集:

    ID       KEY
  320249T    75
  320249T    59
  320249T    83
  320249T    78
  320249T    42
  320249T    78
  320249T    42
(数据有大约23个其他列和大约200万行)。数据已按数据排序,即特定ID的第一行是最新的,最后一行是第一行。我想保留最重复的密钥,所以我保留(df是我的数据集):

在两个(或多个)键具有相同数量的“计数”的情况下,我希望及时保留最后一个键,在这种特殊情况下,它将是78(如果您看到第一个表)。然而,当我这样做时:

df.freq1[,.SD[which.max(count),],by=ID]
我明白了


我猜它选择42是因为分组结果的顺序,那么,我如何做到分组结果保持原始数据帧的时间顺序呢?

不是最优雅的,但这个
dplyr
解决方案有效,并避免了缓慢的排列:

df %>%   
  mutate(order = row_number()) %>% 
  group_by(ID, KEY) %>% 
  summarise(n = n(),
            order = first(order)) %>% 
  filter(n == max(n)) %>% 
  slice(which.min(order))
来源:本地数据帧[1 x 4]
分组:ID[1]
ID键n顺序
1320249T 78 2 4

您正在混合
dplyr
数据。table
code,您想要哪一个?此外,我们在您的数据中没有
Pat_code
Exa_SpeKey
。您是对的,没有想到这一点。数据可能会变得很大,所以Data.table可能会更好。变量现在应该是正确的。谢谢它是否仅在计数大于1时适用?对于
dpyr
df%%>%groupby(ID,KEY)%%>%summary(count=n())%%>%groupby(count)%%>%summary(ID=last(ID),KEY=last(KEY))
谢谢@JanLauGe。我猜从那里我找到了一个计数更大的?
df.freq1[,.SD[which.max(count),],by=ID]
      ID    KEY count
1:  320249T  42     2
df %>%   
  mutate(order = row_number()) %>% 
  group_by(ID, KEY) %>% 
  summarise(n = n(),
            order = first(order)) %>% 
  filter(n == max(n)) %>% 
  slice(which.min(order))
Source: local data frame [1 x 4]
Groups: ID [1]

       ID   KEY     n order
    <chr> <int> <int> <int>
1 320249T    78     2     4