嗨,我正在尝试拆分列
下面是我的df
value = c("AB/cc/dd/id,1,3,33","CC/DD/EE/F,F/GG,22,33,4","AB/cc,22,2,34","KK/SS/G,G,3,22,41")
df = data.frame(value)
我尝试拆分列并获取从最后一个“逗号(,)”到第三个“逗号(,)”的字符串
即我输出df应该如下所示
value1 = c("AB/cc/dd/id","CC/DD/EE/F,F/GG","AB/cc","KK/SS/G,G")
df_out = data.frame(value1)
我用stringr包完成了它
library(stringr)
df[c('col1', 'col2')] <- str_split_fixed(df$value, ',', 2)
先谢了
4条答案
按热度按时间8gsdolmq1#
下面是另一种方法来获取从最后一个不带 * 的 * 正则表达式开始到第三个逗号为止的字符串:
xoefb8l82#
使用
gsub
:正则表达式解释:
"[^[:alpha:],/]"
[]
:定义字符列表^
:否定该列表,gsub将查找匹配列表中没有的任何内容[:alpha:],/
:分别为列表内容、字母、逗号和“/"",+$"
,
:匹配逗号+
:可能出现一次或多次$
:仅在字符串末尾rkue9o1l3#
您可以尝试使用
gsub
在底数R内,如下所示xmq68pz94#
为了防止最后3个逗号之间不仅有数字,而且可能有任何其他字母数字(包括/),您可以使用以下命令:
或另一种碱R溶液: