R 按位置将字符串列分成两列

标签 r dataframe dplyr

我有一个与此处讨论的问题非常相似的问题:Split data frame string column into multiple columns 但是,给定以下数据框:

before = data.frame(attr = c(1,30,4), Name=c('George','Mark','Susan'))
  attr          Name
1    1        George
2   30          Mark
3    4         Susan

我需要将“名称”列拆分为 2 个字符的倍数。 预期结果应该是:

  attr          Split1     Split2    Split3
1    1            Ge         or        ge
2   30                       Ma        rk
3    4            S          us        an

老实说,我现在知道如何使用 dplyr 单独功能来实现这一目标。 感谢您的帮助。

最佳答案

我们可以使用 extract 来捕获在第二组和第三组中包含两个字符的字符串末尾具有组位置 anchor ($) 的组,而第一个组可以灵活一点

library(stringr)
library(dplyr)
library(tidyr)
df1 %>% 
     extract(Name, into = str_c("Split", 1:3), "(.*?)(..)(..)$")
#   attr Split1 Split2 Split3
#1    1     Ge     or     ge
#2   30            Ma     rk
#3    4      S     us     an

或者另一个选项是反转字符串并将位置用作separate

中的sep
library(stringi)
df1 %>% 
  mutate(Name = stri_reverse(Name)) %>% 
  separate(Name, into = str_c("Split", 3:1), sep=c(2, 4)) %>%
  mutate(across(starts_with("Split"), stri_reverse)) %>%
  select(attr, Split1:Split3)

数据

df1 <- structure(list(attr = c(1L, 30L, 4L), Name = c("George", "Mark", 
"Susan")), class = "data.frame", row.names = c("1", "2", "3"))

关于R 按位置将字符串列分成两列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62563564/

相关文章:

r - 根据组的最大变量的标识符

python - 如何防止 pandas 数据框中的索引显示在 Excel 中?

r - 获取 R 中多个变量/列的分类因素计数

r - R中字符之间添加空格

r - R中按段落分割

数据表上 r 中的行向迭代

r Shiny : make fileInput widget disappear after file input

python - 找到列表所有元素的数据框有多低

r - 如何通过另一个 data.table 中定义的多个条件过滤 data.table 中的案例

r - 如何设置ggplot2字体系列