可以用单独的字符分隔sep_rows()吗?

时间:2019-05-31 20:25:21

标签: r tidyr

我正在寻找使用split_rows()整理数据,但是我的数据没有定界符。相反,我想按每个单独的字符“分开”。因为数据中没有定界符,所以我不确定可以在sep=选项中输入什么。

我的数据设置如下:

    cog   func
COG0115    EH
COG0117    H
COG0119    E
COG0124    J
COG0126    G
COG0129    EG

我尝试过:

df %>% separate_rows(., 'func', sep='[A-Z]') 

但是我意识到这是在告诉函数将每个大写字母视为一个“定界符”,并且绝对不是我想要的,因为它会导致一个空列...

我正在寻找:

    cog   func
COG0115    E
COG0115    H
COG0117    H
COG0119    E
COG0124    J
COG0126    G
COG0129    E
COG0129    G

1 个答案:

答案 0 :(得分:2)

正则表达式环顾四周可以用作sep

library(dplyr)
library(tidyr)
df %>% 
   separate_rows(func, sep = '(?<=.)(?=.)')
#       cog func
#1 COG0115    E
#2 COG0115    H
#3 COG0117    H
#4 COG0119    E
#5 COG0124    J
#6 COG0126    G
#7 COG0129    E
#8 COG0129    G

数据

df <- structure(list(cog = c("COG0115", "COG0117", "COG0119", "COG0124", 
"COG0126", "COG0129"), func = c("EH", "H", "E", "J", "G", "EG"
)), class = "data.frame", row.names = c(NA, -6L))