【发布时间】:2021-05-07 11:24:05
【问题描述】:
我有两个 data.tables。
dt1 <- data.table("Symbol1" = c("EURUSD", "USDCAD", "EURUSD", "CADJPY"), "Volume" = c(1, 10, 2, 20))
dt2 <- data.table("Symbol" = c("EURUSD", "USDCAD"), "Description" = c("Euro vs Dollar", "Canadian vs Dollar"), key = "Symbol")
我想通过引用为第二个 data.table 的第一个 data.table 添加一个新列“Description”(其中“Symbol”是 key )。 我尝试使用下一种方式:
dt1[, Description := dt2[.(Symbol1), Description]]
这很好用。结果出来了
dt1
Symbol1 Volume Description
1: EURUSD 1 Euro vs Dollar
2: USDCAD 10 Canadian vs Dollar
3: EURUSD 2 Euro vs Dollar
4: CADJPY 20 <NA>
但是如果这两个data.tables有相同的列名(Symbol)
dt1 <- data.table("Symbol" = c("EURUSD", "USDCAD", "EURUSD", "CADJPY"), "Volume" = c(1, 10, 2, 20))
dt2 <- data.table("Symbol" = c("EURUSD", "USDCAD"), "Description" = c("Euro vs Dollar", "Canadian vs Dollar"), key = "Symbol")
dt1[, Description := dt2[.(Symbol), Description]]
我遇到了错误:
Error in `[.data.table`(dt1, , `:=`(Description, dt2[.(Symbol), Description])) :
Supplied 2 items to be assigned to 4 items of column 'Description'. If you wish to 'recycle' the RHS please use rep() to make this intent clear to readers of your code.
有什么方法可以让它正常工作吗? 感谢您的帮助!
【问题讨论】:
标签: r data.table key