[英]Filter rows based on the dplyr groupby, summarize output
我有一個包含兩列的數據集,都市圈,狀態。 我在dplyr中給出以下命令,
data %>% group_by(metro, State) %>% summarise(count = n())
我得到以下輸出,
metro State count
A OH 703
A NJ 3
B GA 1453
B CA 456
B WA 123
我現在想過濾掉數據幀中僅是最大計數的行,而忽略剩余的行。 我需要過濾出相應的行。 過濾掉以下命令的行后的輸出應為:
data %>% group_by(metro, State) %>% summarise(count = n())
metro State count
A OH 703
B GA 1453
每個都市圈只有一個狀態,即狀態數最大且剩余的狀態將被刪除。
以下是我的嘗試,
data %>% group_by(metro, State) %>% filter(n() == max(n()))
但是,這再次給出了與輸入相同的數據幀。
有人可以幫我嗎? 我的輸出應該是每個都市圈都應具有唯一的狀態,該狀態應具有最大數量,其余的狀態條目應被刪除。
謝謝
您需要一個雙階段groupby,首先groupby Metro和state獲得計數,然后groupby metro並過濾掉不等於每個Metro中最大計數的計數:
data1 <- data %>% group_by(metro, State) %>% mutate(count = n()) %>%
group_by(metro) %>% filter(count == max(count))
nrow(data1)
我們也可以使用data.table
library(data.table)
setDT(data)[, count := .N , .(metro, state)][, .SD[count == max(count)] , .(metro)]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.