R 填写同一data.table中的值

R 填写同一data.table中的值,r,data.table,R,Data.table,我有一个data.table,其中缺少值,需要根据同一data.table中的其他行进行填充。我可以通过复制data.table并按我试图填充的行中的唯一值进行过滤来实现这一点,但我认为必须有一种更优雅的方法来实现这一点,而不需要使用太多内存。由于列名混淆,我也不知道是否可以在其内部引用相同的data.table 在本例中,有一个单据编号、值和分录类型。如果可能的话,我需要解决方案包括单据号和条目类型作为填充值的键。条目类型11从来没有值-该值可以与条目类型16或类型NA一起存储 test &l

我有一个data.table,其中缺少值,需要根据同一data.table中的其他行进行填充。我可以通过复制data.table并按我试图填充的行中的唯一值进行过滤来实现这一点,但我认为必须有一种更优雅的方法来实现这一点,而不需要使用太多内存。由于列名混淆,我也不知道是否可以在其内部引用相同的data.table

在本例中,有一个单据编号、值和分录类型。如果可能的话,我需要解决方案包括单据号和条目类型作为填充值的键。条目类型11从来没有值-该值可以与条目类型16或类型NA一起存储

test <- data.table(docnumber = c(100023,100024,100024,100024,
                                 100025,100025,100026,100026), 
                   value = c(15423,15428,NA,NA,
                             17832,NA,23162,NA), 
                   type = c(16,16,11,12,NA,11,16,11)
)
test

test基于该示例,我假设您可以执行
test[,value:=unique(na.omit(value)),by=docnumber]
,但我不确定
类型
列的相关性是什么。如果它有这种排序顺序,
test[,value:=value[1L],by=docnumber]
。如果
完全由
文档编号
决定,而
类型
则不是,那么您可能应该考虑使用更好的数据结构。这里是R社区的常用参考资料:太好了,谢谢。类型只是标识正确的唯一值的另一个键——我可以将它提供给by参数,如果我在一个docnumber中有多个值,这应该可以工作。
results <- data.table(docnumber = c(100023,100024,100024,100024,100025,100025,100026,100026), value = c(15423,15428,15428,15428,17832,17832,23162,23162), type = c(16,16,11,12,NA,11,16,11))
results