2017-11-03 4 views
-2

データフレーム内の2つの行を1つに結合したいが、エントリの複製は避けてください。それは私がこれから移動したいされています。これに2行を結合し、行変数の文字列エントリを複製しないようにするにはどうすればよいですか?

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

tidyrから団結使用

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

、私が実際に取得していますと、次のとおりです。

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

はあなたが役立つことを願って、ありがとう。

答えて

2

希望します。

#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=",")) 

出力は:

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

基本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 
関連する問題