R、 以变量的值为条件删除重复行

R、 以变量的值为条件删除重复行,r,dplyr,R,Dplyr,这是我在这里的第一篇文章。我有一个很大的数据集,我正试图根据其中一个指定变量(勘误表)的值删除重复的行。当我使用下面的代码时,生成的数据集排除了一些在原始数据中没有重复项的情况——我不明白为什么。我需要保留所有的单例案例,只删除重复的。请帮忙 new_data <- data_with_dups %>% group_by(StudentID, District) %>% distinct(StudentID, ERRaw, .keep_all = T) %>%

这是我在这里的第一篇文章。我有一个很大的数据集,我正试图根据其中一个指定变量(勘误表)的值删除重复的行。当我使用下面的代码时,生成的数据集排除了一些在原始数据中没有重复项的情况——我不明白为什么。我需要保留所有的单例案例,只删除重复的。请帮忙

new_data <- data_with_dups %>% 
  group_by(StudentID, District) %>% 
  distinct(StudentID, ERRaw, .keep_all = T) %>%
  top_n(1, ERRaw) 
新数据%
分组依据(学生ID,学区)%>%
不同(学生ID、勘误表、.keep_all=T)%>%
顶部(1,勘误表)

谢谢大家!

我认为任何一个都应该有效。如果您提供可复制/粘贴的样本数据,我将进行测试并确保

# group_by and top_n
new_data <- data_with_dups %>% 
  group_by(StudentID, District) %>% 
  arrange(desc(ERRaw)) %>%
  top_n(1) 

# base R sort, !duplicated
new_data = data_with_dups[order(data_with_dups$ERRaw, decreasing = TRUE), ]
new_data = new_data[!duplicated(new_data[c("StudentID", "District")]), ]
#分组依据和顶部
新数据%
分组依据(学生ID,学区)%>%
排列(描述(勘误))%>%
顶部(1)
#基本R排序!复制
新数据=带重复数据的数据[顺序(带重复数据的数据$ERRaw,递减=真),]
新数据=新数据[!重复(新数据[c(“学生ID”,“学区”)),]

要删除具有多个OB的所有组,您可以执行
分组依据(填充)%>%filter(n()>1)
。。?如果不是这样,也许你可以举个例子。谢谢。这些解决方案不会保留具有最大(或非NA)勘误值的行。而且StudentID仍然存在重复值。我正在尝试(1)保留所有非重复记录,(2)在有重复记录的记录中,选择勘误表值最高(或非NA)的行。这有用吗?非常感谢。是的,这是有用的信息——你应该把它放在你的问题中。我以为您想要删除重复的勘误表值,而不是删除保留最高勘误表值的重复学生/学区ID。我将编辑答案以反映我的新理解。