相关疑难解决方法(0)

在X [Y,j]合并的j中访问具有重复名称的Y列

假设我有这样的数据:

set.seed(1)
DT <- data.table(id=rep(1:3,each=3),y=1997L+sample(1:9,9))
DT2<- data.table(id=1:3,y=1997L+sample(1:3,3))
Run Code Online (Sandbox Code Playgroud)

我想在与DT合并后使用DT2 $ y.我看到这个列是y.1在合并后命名的

setkey(DT,id)
names(DT[DT2])
# [1] "id"  "y"   "y.1"
DT[DT2][,y.1]
# [1] 1998 1998 1998 2000 2000 2000 1999 1999 1999
Run Code Online (Sandbox Code Playgroud)

但是,我不能在j以下名称中使用它:

DT[DT2,y.1]
# Error in `[.data.table`(DT, DT2, y.1) : object 'y.1' not found
Run Code Online (Sandbox Code Playgroud)

我应该在这里使用的秘密前缀或后缀是什么?

r data.table

5
推荐指数
1
解决办法
235
查看次数

Data.table - 多个表上的左外连接

假设你有像这样的数据

fruits <- data.table(FruitID=c(1,2,3), Fruit=c("Apple", "Banana", "Strawberry"))
colors <- data.table(ColorID=c(1,2,3,4,5), FruitID=c(1,1,1,2,3), Color=c("Red","Yellow","Green","Yellow","Red"))
tastes <- data.table(TasteID=c(1,2,3), FruitID=c(1,1,3), Taste=c("Sweeet", "Sour", "Sweet"))

setkey(fruits, "FruitID")
setkey(colors, "ColorID")
setkey(tastes, "TasteID")

fruits
   FruitID      Fruit
1:       1      Apple
2:       2     Banana
3:       3 Strawberry

colors
   ColorID FruitID  Color
1:       1       1    Red
2:       2       1 Yellow
3:       3       1  Green
4:       4       2 Yellow
5:       5       3    Red

tastes
   TasteID FruitID  Taste
1:       1       1 Sweeet
2:       2       1   Sour
3:       3       3  Sweet
Run Code Online (Sandbox Code Playgroud)

我通常需要对这样的数据执行左外连接.例如,"给我所有水果和他们的颜色"需要我写(也许还有更好的方法?)

setkey(colors, "FruitID") …
Run Code Online (Sandbox Code Playgroud)

r data.table

4
推荐指数
2
解决办法
1597
查看次数

标签 统计

data.table ×2

r ×2