如何将字符列分为两列?

问题描述

这就是我所拥有的:

condition    uncomfortable
   <fct>             <dbl>
 fichero               1
 fichero               1
 realhero              1
 realhero              2
 ficvillain            4
 ficvillain            5
 realvillain           8
 realvillain           3

我怎么得到这个:

fictionality    character type    uncomfortable
   
 fic                hero              1
 fic                hero              1
 real               hero              1
 real               hero              2
 fic                villain           4
 fic                villain           5
 real               villain           8
 real               villain           3

也许separate()strsplit()在这里很有用,但我不知道如何使用它们。

解决方法

您可以使用.json()中的extract

tidyr

或者在基数R中:

tidyr::extract(df,condition,c('fictionality','type'),'(fic|real)(hero|villain)')

# fictionality    type uncomfortable
#1          fic    hero             1
#2          fic    hero             1
#3         real    hero             1
#4         real    hero             2
#5          fic villain             4
#6          fic villain             5
#7         real villain             8
#8         real villain             3

数据

transform(df,fictionality = sub('hero|villain','',condition),type = sub('fic|real',condition))
,

要补充 @RonakShah 的答案,您还可以使用separate()中的tidyr并将其分隔符设置为"(?<=a)(?=b)"

tidyr::separate(df,sep = '(?<=fic|real)(?=hero|villain)')

#   fictionality    type uncomfortable
# 1          fic    hero             1
# 2          fic    hero             1
# 3         real    hero             1
# 4         real    hero             2
# 5          fic villain             4
# 6          fic villain             5
# 7         real villain             8
# 8         real villain             3

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...