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