-1

I have a dataset A shown as below. How can I transform dataset A to dataset B. Dataset A contains over 10,000 observations in my file. Is there any easy way to do it?

Dataset A: 

Line 1:AB 12 23 
Line 2:AB 34 56 
Line 3:CD 78 90 
Line 4:EF 13 45

Dataset B:
Line 1:AB 12 23 34 56
Line 2:CD 78 90 NA NA
Line 3:EF 13 45 NA NA
G5W
  • 36,531
  • 10
  • 47
  • 80
aalen
  • 21
  • 4
  • Is `dataset A` a data frame? Could you use `dput` to show a reproducible example? How many rows per group (`AB`, `CD`, `EF`, ...)? – www Sep 13 '17 at 02:32

1 Answers1

2

Try this by using cSplit

library(splitstackshape)
library(dplyr)
DatA['new']=apply(DatA[,-1], 1, paste, collapse=",")
DatA=DatA%>%group_by(Alphabet)%>%summarise(new=paste(new,collapse=','))
cSplit(DatA, 2, drop = TRUE,sep=',')

   Alphabet new_1 new_2 new_3 new_4
1:       AB    12    23    34    56
2:       CD    78    90    NA    NA
3:       EF    13    45    NA    NA

Data input

 DatA <- data.frame(Alphabet = c("AB", "AB", "CD","EF"), 
                     Value1 = c(12,34,78,13),Value2 = c(23,56,90,45),stringsAsFactors = F)
BENY
  • 317,841
  • 20
  • 164
  • 234