根据条件在不同的列上删除行

时间:2018-10-22 03:24:02

标签: r dplyr tidyr

我有一个大数据框,需要根据每个因素水平(国家/地区)中给出的条件来擦除行。我拥有不同年份的变量数据,但是如果有重复的年份,则只需要其中之一即可。这是一个最小的数据帧:

datos <- data.frame(Country = c(rep("Australia", 4), rep("Belgium", 4)), 
         Year = c(2010, 2011, 2012, 2012, 2010, 2011, 2011, 2012), 
         method = c("Method1", "Method1", "Method1", "Method2", "Method1", 
                    "Method1", "Method2", "Method1"))

现在,我希望R执行以下操作:

“对于每个国家,如果重复出现 Year,请删除其中method等于Method1的行”。

1 个答案:

答案 0 :(得分:4)

使用dplyr,我们可以group_by Country以及Yearfilter对各组行数大于1和{ {1}}。

method == "Method1

对基数R library(dplyr) datos %>% group_by(Country, Year) %>% filter(!(n() > 1 & method == "Method1")) # Country Year method # <fct> <dbl> <fct> #1 Australia 2010 Method1 #2 Australia 2011 Method1 #3 Australia 2012 Method2 #4 Belgium 2010 Method1 #5 Belgium 2011 Method2 #6 Belgium 2012 Method1 使用相同的逻辑

ave