假设我有这样的数据:
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)
我应该在这里使用的秘密前缀或后缀是什么?
假设你有像这样的数据
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)