我的列中包含两个以“ - >”分隔的字母数字字符我正试图将它们分成几列。
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]]但没有获得所需的输出。
整数类型的列都是大写字母(我不确定这是不是。)
答案 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