我有一些看起来像这样的数据(底部的可重复代码):
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
答案 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>