gpt4 book ai didi

r - 将数据框中的每个 x 个字符拆分为字符串

转载 作者:行者123 更新时间:2023-12-02 00:11:13 24 4
gpt4 key购买 nike

我知道这里有一些关于每个nth字符分割字符串的答案,例如this onethis one ,但是这些都是非常具体的问题,并且主要与单个字符串相关,而不是与多个字符串的数据帧相关。

<小时/>

示例数据

df <- data.frame(id = 1:2, seq = c('ABCDEFGHI', 'ZABCDJHIA'))

看起来像这样:

  id       seq
1 1 ABCDEFGHI
2 2 ZABCDJHIA

每隔三个字符分割

我想每隔三个字符分割每行中的字符串,这样生成的数据框如下所示:

id  1   2   3
1 ABC DEF GHI
2 ZAB CDJ HIA

我尝试过的

我之前使用过 splitstackshape 将字符串拆分为单个字符,如下所示:df %>% cSplit('seq', sep = '', stripWhite = FALSE, type .convert = FALSE) 我希望有一个类似的函数(或者也许可以使用 cSplit)来按每三个字符进行分割。

最佳答案

一个选项是 separate

library(tidyverse)
df %>%
separate(seq, into = paste0("x", 1:3), sep = c(3, 6))
# id x1 x2 x3
#1 1 ABC DEF GHI
#2 2 ZAB CDJ HIA

如果我们想创建更通用的

n1 <- nchar(as.character(df$seq[1])) - 3
s1 <- seq(3, n1, by = 3)
nm1 <- paste0("x", seq_len(length(s1) +1))
df %>%
separate(seq, into = nm1, sep = s1)
<小时/>

或者使用base R ,使用strsplit ,通过将正则表达式环视传递到 list 中,将 'seq' 列拆分为 3 个字符的每个实例。然后rbind list元素

df[paste0("x", 1:3)] <- do.call(rbind, 
strsplit(as.character(df$seq), "(?<=.{3})", perl = TRUE))

注意:最好避免以非标准标签(例如数字)开头的列名称。因此,在名称开头附加“x”

关于r - 将数据框中的每个 x 个字符拆分为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56315999/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com