2017-11-03 1 views
-2

Ich möchte zwei Zeilen in meinem Dataframe zu einem einzigen kombinieren, aber vermeiden Sie die Einträge zu duplizieren. Das heißt ich daraus verschieben möchten:Wie kann ich zwei Zeilen kombinieren und vermeiden, die Zeichenfolgeneinträge in den Zeilenvariablen zu duplizieren?

RowA  RowB 
A,B  A,B,C 
A  A 

dazu:

RowA  RowB  RowC 
A,B  A,B,C A,B,C 
A  A  A 

von tidyr vereinigen benutzen, was ich eigentlich immer:

RowA  RowB  RowC 
A,B  A,B,C A,B,A,B,C 
A  A  A,A 

Hoffnung, die Sie helfen können , Vielen Dank.

Antwort

2

Hoffe, das hilft!

#sample data 
df <- read.table(text='colA  colB 
A,B  A,B,C 
A  A', header=T) 

library(dplyr) 
library(tidyr) 
temp <- df %>% unite(colC, colA, colB, sep=',') 
df$colC <- sapply(strsplit(temp$colC ,","), function(x) paste(unique(x), collapse=",")) 

Ausgang ist:

colA colB colC 
1 A,B A,B,C A,B,C 
2 A  A  A 
1

Base-R

df <- read.table(text="RowA  RowB 
A,B  A,B,C 
A  A", header=TRUE, stringsAsFactors=FALSE) 

myfun <- function(dfrow) { 
      paste(unique(unlist(strsplit(paste(dfrow, collapse=","), ","))), collapse=",") 
     } 

df$RowC <- sapply(seq_len(nrow(df)), function(i) myfun(df[i,])) 
    # RowA RowB RowC 
# 1 A,B A,B,C A,B,C 
# 2 A  A  A 
Verwandte Themen