果子学生信
1.保留第一个重复: A,A,B,C --->A,B,C
2.去掉所有重复:A,A,B,C --->B,C
一般情况函数默认都是保留第一个重复。
比如:
在R中识别和删除重复数据:
主要运用 dplyr::n()
do包中的duplicate()命令和duplicated()命令的主要区别是前者包含了所有重复项,后者不包含重复的第一项。
duplicate()命令在开发版的do包中,CRAN上的do包并不包含这一命令。
安装方法是devtools:install_github("yikeshu0611/do")
去掉所有重复最简洁函数: df %>% group_by(a) %>% filter(n()==1)
你的意思是不是按照剩余n-1列进行去重啊?如果是这种,直接用duplicated函数,例如
set.seed(1234)
df <- data.frame(x1 = sample(c("Normal","Unnormal"), 10, replace = TRUE),
x2 = sample(c("a","b"), 10,replace = TRUE),
x3 = sample(c("c","d"), 10,replace = TRUE))
df
df[!duplicated(df[,-1]),] # 按第2,3列去重后的结果
如果是要去重且必须指定第一列值是“正常”,可以用dplyr包
library(dplyr)
df %>% group_by(x2,x3) %>% filter(x1 == "Normal" &row_number() == 1) %>% ungroup() #