我没有在这里讨论过这个问题。
我经常处理R中的稀疏数据帧(丰富的缺失值)。我还需要将新数据合并到“主”df中,并且新数据也几乎总是稀疏的。
“老派”方法似乎是:1。在主人中创建一个新的NAs列; 2.交叉索引两个数据帧之间的密钥。 3.使用索引,仅将匹配键中的新数据值插入到主数据库中。
这种方法似乎适用于数字和字符列。
## master data frame
master = data.frame( id = 1:20, a = rnorm(20) )
master
## what you need to add
new.data = data.frame( id = 2 * 1:10, b = c(rep('a', 5),
rep('b', 5) ) )
new.data
## works for character, numeric
try1 = master
ind = match( new.data$id, try1$id )
try1$b = NA
try1[ind, 'b'] = new.data$b
try1
str(try1)
但是,当新数据是一个因素时,这会失败:在插入过程中,因子信息会丢失,并会添加因子的数字表示。
## what you need to add is a factor
new.data = data.frame( id = 2 * 1:10, b = factor( c(rep('a', 5),
rep('b', 5) ), ordered = TRUE ) )
new.data
## works for character, numeric
## not factors
try1 = master
ind = match( new.data$id, try1$id )
try1$b = NA
try1[ind, 'b'] = new.data$b
str(try1$b)
当然,可以在主数据框中重新创建因子,但这很费力且容易出错。寻找优雅,或至少非丑陋的解决方案。
答案 0 :(得分:1)
您可以使用npm install mocha --save-dev
node_modules/.bin/mocha First.js
包中的left_join
:
dplyr