gpt4 book ai didi

r - 按数据表上的最后一个空格拆分字符串

转载 作者:行者123 更新时间:2023-12-04 11:14:50 29 4
gpt4 key购买 nike

我有一个包含 2 列的数据表:

             term  freq
1: a arena tour 1
2: a available why 1
3: a backup in 1
4: a bad ass 1
5: a bad chick 1

我想用最后一个空格分割“术语”列,例如:

         termA  termB freq
1: a arena tour 1
2: a available why 1
3: a backup in 1
4: a bad chick 1

我尝试使用“str”(代码如下),它仅适用于字符串,但不适用于 data.date(似乎无法在所有行上使用相同的索引)

data.table (termA = substr(dt_n3$term, 1, rev(gregexpr("\\ ", dt_n3$term)[[1]])[1]-1),
termB = substr(dt_n3$term, rev(gregexpr("\\ ", dt_n3$term)[[1]])[1], 1000),
freq = dt_n3$freq)

无论如何,我认为这不是最好的方法。任何人都可以帮助我吗?谢谢

最佳答案

您可以尝试 data.table v 1.9.5 中的 tstrsplit 函数

DT[, paste0('term', LETTERS[1:2]) := tstrsplit(term, ' (?=[^ ]*$)',
perl=TRUE)][, term:=NULL][]
# freq termA termB
#1: 1 a arena tour
#2: 1 a available why
#3: 1 a backup in
#4: 1 a bad ass
#5: 1 a bad chick

数据

DT <- data.table(term= c("a arena tour", "a available why", 
"a backup in", "a bad ass", "a bad chick"), freq=1)

略微修改的版本,您可以在同一语句中进行赋值和删除:

cols = c("term", paste0("term", LETTERS[1:2]))
DT[, (cols) := c(list(NULL), tstrsplit(term, ' (?=[^ ]*$)', perl=TRUE))]

NULL 分配给 term 会删除该列。

关于r - 按数据表上的最后一个空格拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29151690/

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