【问题标题】:Filtering rows in dataframe with dplyr使用 dplyr 过滤数据框中的行
【发布时间】:2016-03-05 04:26:46
【问题描述】:

我有一个关于 1960 年至 2014 年在不同国家/地区进行的调查的统一数据集。我想删除同一年在同一国家/地区进行两次不同调查的行。我不确定如何使用 dplyr 中的过滤动词从协调数据集中删除行。

Harm_data1 %>% 
group_by(country, survey, year, protest demo , protest fact) %>% 
filter(country >= 2 | year >=2) 

【问题讨论】:

  • Harm_data1 %>% group_by(country, year) %>% filter(n() == 1)

标签: r dplyr rows plyr


【解决方案1】:

您是说希望将该输出通过管道传输到新表中吗?我相信你上面的内容会与你所要求的完全相反,也就是说,它只会返回那些更大的东西。我会这样做:

Harm_data1 %>% 
group_by(country, survey, year, protest demo , protest fact) %>% 
filter(country < 2 | year < 2) 

【讨论】:

  • 鉴于国家通常不存储为数字并且年份通常大于 1,这可能会返回一个空集。您需要计算每个组的行数。
  • 国家不存储为数字,这是我认为的问题,但可以使用 dplyr 中的计数或不同函数作为条件来获取同一年发生多次的国家/地区的结果. ?将不胜感激任何帮助:)
  • 编辑,我忘了连接国家和年份。这会更好 group_by(country) %>% mutate(Country_survey = n(paste(country, year)) %>% filter(Country_survey
  • 我还想知道我是否可以在国家和年份列上使用 distinct 函数,这样是否也能去掉重复项? Harm_data1 %>% distinct(t_l2u_country_alpha_2,t_interview_year) 你认为这是否也有助于识别同一国家在同一年不止一次发生这种情况的情况?
  • 很确定一个值必须匹配,但是是的,你可以这样使用 distinct。
猜你喜欢
  • 1970-01-01
  • 2019-03-29
  • 1970-01-01
  • 2021-02-27
  • 1970-01-01
  • 2015-12-26
  • 2017-06-09
  • 2014-03-05
  • 1970-01-01
相关资源
最近更新 更多