gpt4 book ai didi

r - 每 n 个字符拆分字符串新列

转载 作者:行者123 更新时间:2023-12-04 14:08:40 25 4
gpt4 key购买 nike

假设我有一个这样的数据框,带有一个字符串向量 var2

var1  var2
1 abcdefghi
2 abcdefghijklmnop
3 abc
4 abcdefghijklmnopqrst

将 var2 每 n 个字符拆分为新列直到每个字符串结束的最有效方法是什么,

例如,如果每 4 个字符,输出将如下所示:
var1  var2                  new_var1  new_var2 new_var3  new_var4  new_var5
1 abcdefghi abcd efgh i
2 abcdefghijklmnop abcd efgh ijkl mnop
3 abc abc
4 abcdefghijklmnopqrst abcd efgh ijkl mnop qrst

字符串包?使用“str_split_fixed”

或使用正则表达式:
gsub("(.{4})", "\\1 ", "abcdefghi")

根据 var2 的长度(例如,可以是 10000 个字符)创建转到 new_var_n 的新列的能力。

最佳答案

这是 data.table 的一种选择和一个辅助函数 fixed_split我取自 this answer并稍作修改(它使用 tstrsplit 而不是 strsplit )。

library(data.table)
fixed_split <- function(text, n) {
data.table::tstrsplit(text, paste0("(?<=.{",n,"})"), perl=TRUE)
}

定义 n ,字符数和 new_vars , 首先添加的列数
n <- 4
new_vars <- ceiling(max(nchar(df$var2)) / n)

setDT(df)[, paste0("new_var", seq_len(new_vars)) := fixed_split(var2, n = n)][]
# var1 var2 new_var1 new_var2 new_var3 new_var4 new_var5
#1: 1 abcdefghi abcd efgh i <NA> <NA>
#2: 2 abcdefghijklmnop abcd efgh ijkl mnop <NA>
#3: 3 abc abc <NA> <NA> <NA> <NA>
#4: 4 abcdefghijklmnopqrst abcd efgh ijkl mnop qrst

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

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