【发布时间】:2016-11-13 18:13:50
【问题描述】:
我有一个包含两列、metro、state 的数据集。我在 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()))
但这再次给出了与输入相同的数据帧。
有人可以帮我做这件事吗?我的输出应该是每个 Metro 都应该有一个具有最大计数的唯一状态,并且应该删除剩余的状态条目。
谢谢
【问题讨论】:
-
data %>% group_by(metro) %>% filter(count == max(count)) -
@Psidom 这仍然给了我相同的输出,因为当我们按地铁分组时,计数加起来,我们无法过滤掉最大条目。
-
@Psidom 我可以在汇总后过滤掉。我的问题是过滤掉带有相应行的原始数据框。如果以前数据框有 2738 行,我需要它在过滤后才有 2156 行。应删除对应于 (3, 456, 123) 计数的行。
-
请添加一个可重现的例子。