r - How to convert rows into columns using dplyr -
this question has answer here:
- solidifying melted data frame? 3 answers
- spreading 2 column data frame tidyr 4 answers
i have following data frame (tibble):
library(tidyverse) lines<-" a,foo,9394981 b,bar,6826405 c,qux,1074885 d,gop,1493691    a,foo,100 b,bar,200 c,qux,300 d,gop,400  " con <- textconnection(lines) dat <- read.csv(con,header=false) close(con) dat <- as.tibble(dat) dat which looks this:
# tibble: 8 × 3        v1     v2      v3   <fctr> <fctr>   <dbl> 1         foo 9394981 2      b    bar 6826405 3      c    qux 1074885 4      d    gop 1493691 5         foo     100 6      b    bar     200 7      c    qux     300 8      d    gop     400 how can covert to:
foo        bar    qux     gop 9394981 6826405 1074885 1493691  100     200      300      400 
we can use spread tidyr after creating row index  take care of duplicate elements
library(tidyr) library(dplyr) dat %>%     select(-v1) %>%     group_by(v2) %>%    dplyr::mutate(i1 = row_number()) %>%     spread(v2, v3) %>%    select(-i1) or using dcast data.table
library(data.table) dcast(setdt(dat), rowid(v2) ~ v2, value.var = "v3")[, v2 := null][] 
Comments
Post a Comment