首页 > 解决方案 > 如何获取数据框中未找到的值的 NA

问题描述

我有一个值向量和一个数据框,我可以使用以下命令在数据框的特定列中找到向量的每个项目:

lapply(l, function(x) df[which(df$col1==x),col2])

对于我的数据框中不可用的值,如何获得 NA?

例如:

df:   col1  col2
      1     a
      1     b
      2     c

l=c(1,3)

output:  col1   col2
         1      a,b
         3      NA

标签: rdataframe

解决方案


l使用 data.table 您可以通过对(您的向量)运行二进制连接来有效地实现这一点

library(data.table)
setDT(df)[.(l), # join between `df` & `l`
          on = .(col1), # using `col1`
          .(col2 = toString(col2)), # paste the values in `col2` (you can add `unique`)
          by = .EACHI] # do this per each value in `l`
#    col1 col2
# 1:    1 a, b
# 2:    3   NA

推荐阅读