簡體   English   中英

如何將多列合並為一列並刪除重復項?

[英]How to concatenate multiple columns in one and remove duplicates?

我有一個像這樣的 dataframe:

A <- c("a", "a", "a", "a")
B <- c("b", "b", "b", "b")
C <- c("c", "a", "c", "c")
D <- c("d", "b", "a", "d")
E <- c("a", "a", "b", "e")
F <- c("b", "b", "c", "f")
G <- c("c", "a", "a", "g")
df <- data.frame(A, B, C, D, E, F, G)

我需要合並 A 到 G 列中的所有值,刪除重復項,並將結果列表存儲在新列中。 所以,最終的結果應該是這樣的:

在此處輸入圖像描述

試試這個

> df$new <- apply(df,1,unique)
> df
  A B C D E F G                 new
1 a b c d a b c          a, b, c, d
2 a b a b a b a                a, b
3 a b c a b c a             a, b, c
4 a b c d e f g a, b, c, d, e, f, g

一個可能的解決方案:

library(tidyverse)

A <- c("a", "a", "a", "a")
B <- c("b", "b", "b", "b")
C <- c("c", "a", "c", "c")
D <- c("d", "b", "a", "d")
E <- c("a", "a", "b", "e")
F <- c("b", "b", "c", "f")
G <- c("c", "a", "a", "g")
df <- data.frame(A, B, C, D, E, F, G)

df %>% 
  rowwise %>% 
  mutate(new = c_across(everything()) %>% unique %>% str_c(collapse = ",")) %>% 
  ungroup

#> # A tibble: 4 × 8
#>   A     B     C     D     E     F     G     new          
#>   <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>        
#> 1 a     b     c     d     a     b     c     a,b,c,d      
#> 2 a     b     a     b     a     b     a     a,b          
#> 3 a     b     c     a     b     c     a     a,b,c        
#> 4 a     b     c     d     e     f     g     a,b,c,d,e,f,g

這是一種愚蠢的做法,但這能解決您的問題嗎?

list(unique(t(df)[,1]), 
 unique(t(df)[,2]),
 unique(t(df)[,3]),
 unique(t(df)[,4]))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM