在 data.table 中连接列中的值

concatenate values in column in a data.table

很难为这个问题选择一个标题,但这是细节。让我们在这个例子中使用 mtcars。

让我们将其转换为 data.table

m<-as.data.table(mtcars,keep.rownames = T)

我想要的是将所有具有特定碳水化合物值的汽车连接成一个字符。所以我做了以下事情:

A<-m[, list(list(rn)), by = carb]

它部分有效...对于 carb=4 我得到: 马自达 RX4,马自达 RX4 Wag,Duster 360,Merc 280,Merc 280C,凯迪拉克弗利特伍德,

但那些不是所有carb=4的车 答案似乎以某种方式被删减了...

我希望有人能帮助解决这个问题...

此行:A<-m[, list(list(rn)), by = carb] 在 class 的 data.table 中创建了一个列 "list":

class(A$V1)
[1] "list"

这使得操作变得非常困难。此外,打印时结果会稍微修剪一下。 一个更简单更好的解决方案 - 连接成一个字符串:

A<-m[, paste(rn,collapse=","),by=carb]
A
   carb                                                                                                                                           V1
1:    4 Mazda RX4,Mazda RX4 Wag,Duster 360,Merc 280,Merc 280C,Cadillac     Fleetwood,Lincoln Continental,Chrysler Imperial,Camaro Z28,Ford Pantera L
2:    1                                                        Datsun 710,Hornet 4 Drive,Valiant,Fiat 128,Toyota Corolla,Toyota Corona,Fiat X1-9
3:    2     Hornet Sportabout,Merc 240D,Merc 230,Honda Civic,Dodge Challenger,AMC Javelin,Pontiac Firebird,Porsche 914-2,Lotus Europa,Volvo 142E
4:    3                                                                                                        Merc 450SE,Merc 450SL,Merc 450SLC
5:    6                                                                                                                             Ferrari Dino
6:    8                                                                                                                            Maserati Bora