连接data.table

时间:2015-09-28 15:25:21

标签: r data.table

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

让我们将其转换为data.table

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

我想要的是在一个角色中连接所有具有特定碳水化合物值的汽车。所以我做了以下事情:

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

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

但那些不是所有的汽车都是碳水化合物= 4 似乎答案被某种方式修剪了......

我希望有人可以帮忙...

1 个答案:

答案 0 :(得分:3)

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

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