gpt4 book ai didi

r - 粘贴两个 data.table 列

转载 作者:行者123 更新时间:2023-12-04 01:38:11 25 4
gpt4 key购买 nike

dt <- data.table(L=1:5,A=letters[7:11],B=letters[12:16])
L A B
1: 1 g l
2: 2 h m
3: 3 i n
4: 4 j o
5: 5 k p

现在我想粘贴“A”和“B”列来获得一个新的,我们称之为"new":
dt2
L A B new
1: 1 g l gl
2: 2 h m hm
3: 3 i n in
4: 4 j o jo
5: 5 k p kp

最佳答案

我有一个类似的问题,但有很多列,并且不想手动输入它们。

新版本

(基于@mnel 的评论)

dt[, new:=do.call(paste0,.SD), .SDcols=-1]

这大约是旧版本的两倍,并且似乎回避了这些怪癖。注意使用 .SDcols标识要在 paste0 中使用的列. -1使用除第一列之外的所有列,因为 OP 想要粘贴 A 列和 B 列而不是 L 列。

如果您想使用不同的分隔符:
dt[ , new := do.call(paste, c(.SD, sep = ":"))]

旧版本

您可以使用 .SDby处理多列:
dt[,new:=paste0(.SD,collapse=""),by=seq_along(L)]

我加了 seq_along如果 L 不是唯一的。 (您可以使用 dt<-data.table(L=c(1:4,4),A=letters[7:11],B=letters[12:16]) 进行检查)。

此外,在我的实际实例中,出于某种原因,我不得不使用 t(.SD)paste0部分。可能还有其他类似的怪癖。

关于r - 粘贴两个 data.table 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18359456/

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