【发布时间】:2017-07-24 01:19:59
【问题描述】:
我想使用 R 中的数据表来做到这一点。
所以我从这个开始
dtMain
Name state
1: CompanyC CA
2: CompanyM MN
3: CompanyC1 California
4: CompanyT TX
statesFile
stateExpan state
1: Texas TX
2: Minnesota MN
3: California CA
在dtMain$State == statesFile$state的地方,我想用statesFile$stateExpan替换dtMain$State
并得到这个
dtMain
Name state
1: CompanyA California
2: CompanyB Minnesota
3: CompanyC California
4: CompanyD Texas
这是创建 2 个文件的代码
library(data.table)
dtMain <- data.table(Name = c("CompanyA" ,"CompanyB","CompanyC","CompanyD"),
state = c("CA","MN","California","TX"))
statesFile <- data.table( stateExpan = c("Texas","Minnesota","California"),
state = c("TX","MN","CA"))
我的问题是这个的下一个级别 R finding rows of a data frame where certain columns match those of another 我正在寻找数据表解决方案。
【问题讨论】:
-
你应该用文字来解释转换的规则,而不是简单地显示输入和输出
-
@ytk 我认为这不是骗人的,因为这是关于修改 dtMain,而不是合并以创建新表。
-
反正答案是
dtMain[statesFile, on=.(state), state := i.stateExpan ]我看看能不能找到更合适的骗子。您还可以查看用户编写的示例:stackoverflow.com/documentation/data.table/4976/… -
谢谢这回答了我的问题。我正在使用 dtMain[statesFile$state, state := statesFile$stateExpan] 可以工作但会破坏原始 dt 顺序。
-
是的,通常最好避免在 data.tables 中使用 $,因为它不需要并且会造成混乱。
标签: r data.table