当前位置:  开发笔记 > 编程语言 > 正文

每两个字符多次拆分字符串

如何解决《每两个字符多次拆分字符串》经验,为你挑选了1个好方法。

我的数据框中有一个字符列,看起来像

df<-
  data.frame(a=c("AaBbCC","AABBCC","AAbbCC"))#df
       a
1 AaBbCC
2 AABBCC
3 AAbbCC

我想每两个字符分割一次这个列.所以在这种情况下我想获得三列命名VA,VB,VC.我试过了

library(tidyr)
library(dplyr)
df<-
  data.frame(a=c("AaBbCC","AABBCC","AAbbCC"))%>%
  separate(a,c(paste("V",LETTERS[1:3],sep="")),sep=c(2,2))
 VA VB   VC
1 Aa    BbCC
2 AA    BBCC
3 AA    bbCC

但这不是理想的结果.我喜欢将结果VC分成VB(所有字母B)和VC(所有字母C)如何让R分割每两个字符.列中字符串的长度对于每一行始终相同(在此示例中为6).我将拥有长度> 10的字符串.



1> Jaap..:

你其实非常接近.您需要指定分隔符位置sep = c(2,4)而不是sep = c(2,2):

df <- separate(df, a, c(paste0("V",LETTERS[1:3])),sep = c(2,4))

你得到:

> df
  VA VB VC
1 Aa Bb CC
2 AA BB CC
3 AA bb CC

在基数R你可以做(​​借用@ rawr的评论):

l <- ave(as.character(df$a), FUN = function(x) strsplit(x, '(?<=..)', perl = TRUE))
df <- data.frame(do.call('rbind', l))

这使:

> df
  X1 X2 X3
1 Aa Bb CC
2 AA BB CC
3 AA bb CC

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有