整数类型分为两列

时间:2017-06-24 12:20:03

标签: r split

我的列中包含两个以“ - >”分隔的字母数字字符我正试图将它们分成几列。

Df的:

 column e 
1. asd1->ref2
2. fde4 ->fre4
3. dfgt-fgr ->frt5
4. ftr5 -> lkh-oiut
5. rey6->usre-lynng->usre-lkiujh->kiuj-bunny
6. dge1->fgt4->okiuj-dfet

期望的输出

  col 1    col 2
1. asd1     ref2
2. fde4     fre4
3.          frt5
4. ftr5 
5. rey6
6. dge1     fgt4

我尝试使用out <- strsplit(as.character(Df$column e),'_->_')没有输出并使用str_extract(m1$column e,"(?<=\\[)[[:alnum:]]")->m1$column f,也使用strsplit(as.character(Df $ column e),' - &gt;'fixed = T)[[1]] [ [1]]但没有获得所需的输出。

整数类型的列都是大写字母(我不确定这是不是。)

2 个答案:

答案 0 :(得分:1)

这是tidyverse

的一种方式
library(tidyverse)
df1 %>% 
    separate(columne, into = c('col1', 'col2'), sep = "->", extra = 'drop') %>% 
    mutate_all(funs(replace(., str_detect(., '-'), "")))
#   col1 col2
#1  asd1 ref2
#2 fde4  fre4
#3       frt5
#4 ftr5      
#5  rey6     
#6  dge1 fgt4

答案 1 :(得分:1)

一个base R解决方案,虽然比@ akrun tidyverse一个简洁一点:

# split as appropriate
out <- strsplit( as.character( Df$column.e ), '->' )

out <- lapply( out, function(x) {

    # I assume you don't want the white space
    y <- trimws( x )

    # take the first two "columns"
    y <- y[1:2]

    # remove any items containing a hyphen
    y[ grepl( "-", y ) ] <- ""
    y
    }
)

# then bind it all rowwise
out <- do.call( rbind, out )
data.frame( out )

    X1   X2
1 asd1 ref2
2 fde4 fre4
3      frt5
4 ftr5     
5 rey6     
6 dge1 fgt4