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

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的字符串。

最佳答案

你真的很亲密。您需要将分隔符位置指定为sep = c(2,4)而不是sep = c(2,2):

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

你得到:



在R的基础上,您可以做(借用@rawr的注释):
l <- ave(as.character(df$a), FUN = function(x) strsplit(x, '(?<=..)', perl = TRUE))
df <- data.frame(do.call('rbind', l))

这使:

关于r - 每两个字符多次拆分字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34695136/

10-12 02:56