R按模式将一列拆分为多列

标签 r split

<分区>

我想在数据帧 d.df 的列中分隔数字和字符:

col1 
ab 12 14 56
xb 23 234 2342 2
ad 23 45

预期输出:

col1   col2
ab     12 14 56
xb     23 234 2342 2
ad     23 45

我知道它会与此类似,但我不确定分隔符

t <- as.data.frame(str_match(d$col1,"^(.*)"))

我尝试了很多方法,结果是:

col1      col2      
a         b 12 14 56
x         b  23 234 2342 2
a         d  23 45

最佳答案

您可以使用 separate来自 tidyr .

library(tidyr)
d.df %>% separate(col1, c("col1", "col2"), sep="(?<=[a-z]{2} )")
#   col1           col2
# 1   ab       12 14 56
# 2   xb  23 234 2342 2
# 3   ad          23 45

正则表达式,"(?<=[a-z]{2} )" , 是一种后视,意思是“在字符串中的位置拆分后跟一个空格的两个小写字符”。 tidyr似乎对回顾的长度有限制,所以{2}用于指定字母数。

关于R按模式将一列拆分为多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31900428/

相关文章:

linux - 基于列拆分文本文件

java - 如何分割下面的字符串

r - 不再支持ggplot2中的arrow()

减少矩阵比较的计算量

r - 日期格式的冒号,介于秒和毫秒之间。如何解析R?

string - 如何从 std::string::String 中删除换行符/换行符?

java - 在不使用 split Java 的情况下从字符串中添加数字

r - 如何使用 R 搜索 PubMed 或其他数据库

r - 在 R 编程中,& 与 && 和 | 之间有什么区别?与 ||

python - 如何按索引拆分数组,其中拆分的子数组包含拆分点