我有一个大数据框,需要根据每个因素水平(国家/地区)中给出的条件来擦除行。我拥有不同年份的变量数据,但是如果有重复的年份,则只需要其中之一即可。这是一个最小的数据帧:
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
的行”。
答案 0 :(得分:4)
使用dplyr
,我们可以group_by
Country
以及Year
和filter
对各组行数大于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