按列分组后,我遇到了汇总问题。我有一个如下所示的数据集:
ID KEY
320249T 75
320249T 59
320249T 83
320249T 78
320249T 42
320249T 78
320249T 42
(数据有大约23个其他列,大约200万行)。数据已按数据排序,即特定ID的第一行是最新的,最后一行是第一行。我想保留最重复的KEY,所以我这样做(df是我的数据集):
df.freq1 <- df %>% group_by(ID, KEY) %>% summarise(count=n())
给了我结果:
ID KEY count
1: 320249T 42 2
2: 320249T 59 1
3: 320249T 75 1
4: 320249T 78 2
5: 320249T 83 1
如果两个(或多个键)具有相同数量的&#34;计数&#34;,我想保留最后一个键,在这个特定情况下,它将是78(如果你看到第一个表)。但是,当我这样做时:
df.freq1[,.SD[which.max(count),],by=ID]
我得到了
ID KEY count
1: 320249T 42 2
我猜它因为分组结果的顺序而选择42,所以,我该怎么做才能使分组结果保留原始数据帧的时间顺序?
答案 0 :(得分:2)
不是最优雅,但这个dplyr
解决方案有效,并且避免了缓慢安排:
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