我有一个数据集,其中的列带有符号“ |” (来自模型中2个变量的交互),我想根据这个角色将其拆分。
单独的功能可与标准字符配合使用,您如何确定字符'|' ?
library(tidyverse)
df <- data.frame(Interaction = c('var1|var2'))
# as expected
df %>% separate(Interaction, c('var1', 'var2'), sep = '1')
# var1 var2
# 1 var |var2
# not as expected
df %>% separate(Interaction, c('var1', 'var2'), sep = '|')
# var1 var2
# 1 v
答案 0 :(得分:1)
我们可以对\\
进行转义({|
),因为它是正则表达式的元字符,它指定了OR
,默认情况下sep
在{{1}中}模式
如果我们查看regex
文档,
separate(data,col,into,sep =“ [^ [:alnum:]] +”,remove = TRUE, convert = FALSE,额外=“警告”,填充=“警告”,...)
它被描述为
sep-如果为character,则解释为正则表达式。默认值为正则表达式,可匹配任何非字母数字值序列。
?separate
或将其放在方括号中
df %>%
separate(Interaction, c('var1', 'var2'), sep = '\\|')
答案 1 :(得分:1)
竖线是一个特殊字符,这就是为什么表现不如预期的原因:
df %>% separate(Interaction, c('var1', 'var2'), sep = '\\|')
那应该可以解决问题。