这就是我所拥有的:
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()
在这里很有用,但我不知道如何使用它们。
答案 0 :(得分:5)
您可以使用.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))
答案 1 :(得分:1)
要补充 @RonakShah 的答案,您还可以使用separate()
中的tidyr
并将其分隔符设置为"(?<=a)(?=b)"
tidyr::separate(df, condition, c('fictionality', 'type'), 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