将每个字符分开一个单词

时间:2018-10-11 15:40:08

标签: r tidyr

我有一些看起来像这样的数据(底部的可重复代码):

  group1 group2
1  ABBBA  ACCCD

我想将每个字母分成自己的顺序编号列。

所以:

library(tidyverse)

df <- data.frame(stringsAsFactors=FALSE,
         group1 = c("ABBBA"),
         group2 = c("ACCCD")
)

df %>% separate(group1, sep = c(1, 2), into = c("1", "2", "3"))

让我入门:

  1 2   3 group2
1 A B BBA  ACCCD

我可以输入其余的内容,但是必须有一种更优雅的方式来获得我想要的东西:

  1 2 3 4 5 6 7 8 9 10
1 A B B B A A C C C D

1 个答案:

答案 0 :(得分:2)

也许您可以尝试一下(假设我们可以像这样在每行上粘贴group1和group2)

df <- data.frame(stringsAsFactors=FALSE,
     group1 = c("ABBBA","ZY"),
     group2 = c("ACCCD","X")
)

df %>% mutate(id=row_number()
             ,x=str_split(paste0(group1,group2),"(?<=.)(?=.)")) %>% 
  unnest %>% 
  group_by(id) %>% 
  mutate(k=row_number()) %>%
  spread(k,x)
## A tibble: 2 x 13
## Groups:   id [2]
#  group1 group2    id `1`   `2`   `3`   `4`   `5`   `6`   `7`   `8`   `9`   `10` 
#  <chr>  <chr>  <int> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
#1 ABBBA  ACCCD      1 A     B     B     B     A     A     C     C     C     D    
#2 ZY     X          2 Z     Y     X     <NA>  <NA>  <NA>  <NA>  <NA>  <NA>  <NA>