删除R中同一行中的重复值

删除R中同一行中的重复值,r,duplicates,R,Duplicates,我正在处理一个大数据集,R中大约有30万行,我有一个我似乎无法解决的问题。我的数据当前如下所示: G01 G01 G02 G02 G04 C01 C01 B01 H01 H07 D07 H01 我的问题是如何删除行中的重复值,我想要得到的是: G01 G02 G02 G04 C01 B01 H01 H07 D07 尝试这种tidyverse方法。假设您的数据df是一个数据帧,您可以使用separate_rows()以分隔符空格打开值,然后删除重复的值。最后,您可以使用summary(),

我正在处理一个大数据集,R中大约有30万行,我有一个我似乎无法解决的问题。我的数据当前如下所示:

G01 G01 G02
G02 G04
C01 C01 B01
H01 H07 D07 H01
我的问题是如何删除行中的重复值,我想要得到的是:

G01 G02 
G02 G04
C01 B01 
H01 H07 D07

尝试这种
tidyverse
方法。假设您的数据
df
是一个数据帧,您可以使用
separate_rows()
以分隔符空格打开值,然后删除重复的值。最后,您可以使用
summary()
,以获得预期的结果。代码如下:

library(dplyr)
library(tidyr)
#Code
newdf <- df %>% mutate(id=row_number()) %>%
  pivot_longer(-id) %>%
  separate_rows(value,sep=' ') %>%
  group_by(id) %>%
  filter(!duplicated(value)) %>%
  summarise(value=paste0(value,collapse = ' ')) %>% ungroup() %>%
  select(-id)
库(dplyr)
图书馆(tidyr)
#代码
newdf%变异(id=row_number())%>%
枢轴长度(-id)%>%
单独的_行(值,sep='')%>%
分组依据(id)%>%
筛选器(!重复(值))%>%
摘要(值=粘贴0(值,折叠=“”))%%>%ungroup()%%>%
选择(-id)
输出:

# A tibble: 4 x 1
  value      
  <chr>      
1 G01 G02    
2 G02 G04    
3 C01 B01    
4 H01 H07 D07
#一个tible:4 x 1
价值
1 G01 G02
2 G02 G04
3 C01 B01
4 H01 H07 D07
使用的一些数据:

#Data
df <- structure(list(V1 = c("G01 G01 G02", "G02 G04", "C01 C01 B01", 
"H01 H07 D07 H01")), class = "data.frame", row.names = c(NA, 
-4L))
#数据

df您可以使用
unique
删除重复的值

数据:

lapply(x, unique)
#[[1]]
#[1] "G01" "G02"
#
#[[2]]
#[1] "G02" "G04"
#
#[[3]]
#[1] "C01" "B01"
#
#[[4]]
#[1] "H01" "H07" "D07"
x <- list(c("G01","G01","G02"), c("G02","G04"), c("C01","C01","B01"),
 c("H01","H07","D07","H01"))
x <- c("G01 G01 G02", "G02 G04", "C01 C01 B01", "H01 H07 D07 H01")
sapply(strsplit(x, " "), function(y) paste(unique(y), collapse = " "))
#[1] "G01 G02"     "G02 G04"     "C01 B01"     "H01 H07 D07"