根据 data.table 中的另一个行值替换行值

亚历克斯

我有一个微不足道的问题,尽管我正在努力寻找一个简单的答案。我有一个看起来像这样的数据表:

dt <- data.table(id= c(A,A,A,A,B,B,B,C,C,C), time=c(1,2,3,1,2,3,1,2,3), score = c(10,15,13,25,NA,NA,18,29,19))
dt
#     id  time  score
# 1:   A    1    NA
# 2:   A    2    10
# 3:   A    3    15
# 4:   A    4    13
# 5:   B    1    NA
# 6:   B    2    25
# 7:   B    3    NA
# 8:   B    4    NA
# 9:   C    1    18
# 10:  C    2    29
# 11:  C    3    NA
# 12:  C    4    19

我想用“A”的值替换我的组“B”的缺失值。

最终的数据集应该是这样的

final
#     id  time  score
# 1:   A    1    NA
# 2:   A    2    10
# 3:   A    3    15
# 4:   A    4    13
# 5:   B    1    NA
# 6:   B    2    25
# 7:   B    3    15
# 8:   B    4    13
# 9:   C    1    18
# 10:  C    2    29
# 11:  C    3    NA
# 12:  C    4    19

换句话说,以 B 是 NA 为条件,我想替换“A”的分数。请注意,“C”仍然是 NA。我正在努力寻找一种使用 data.table 的干净方法来做到这一点。但是,如果使用其他方法更简单,它仍然可以。

非常感谢你的帮助

阿克伦

这是我们获取NA“分数”行的索引并且“id”为“B”的一种选择,使用它来将 NA 替换为来自“A”的相应“分数”值

library(data.table)
i1 <- setDT(dt)[id == 'B', which(is.na(score))]
dt[, score:= replace(score, id == 'B' & is.na(score), score[which(id == 'A')[i1]])]

或类似的选项 dplyr

library(dplyr)
dt %>%
   mutate(score = replace(score, id == "B" & is.na(score), 
         score[which(id == "A")[i1]))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

R Data.table根据另一列划分列中的值

根据另一个data.table中的值填充一个data.table

Dplyr或data.table根据另一列中的值合并分组数据中的连续行

根据列值更新data.table中的列值

根据另一个data.table删除data.table中的行

用另一个data.table中的值替换data.table中的值

根据另一个data.table的行提取data.table的行

R:根据另一个data.table中的条件“标记”一行

根据R data.table中另一列的值移动列

根据日期合并data.table行

如何根据同一行中的值移动data.table行中的值

根据另一个系列中的值替换系列中的值的简便方法?

在另一个变量的情况下,用R data.table替换多列中的值

根据在另一个data.table上的行值查找来创建列

用来自另一个data.table的相关值替换data.table的列中的向量值的最有效方法是什么?

根据另一个向量的字符串匹配过滤data.table

根据python中的索引用另一个列表的值替换列表中的值

根据先前的值和data.table中的另一个变量填充变量

R-在data.table上联接,根据行中另一列的值选择其他列

在R data.table中,根据另一列的值乘以列名

在data.table中:遍历另一个data.table的行

根据另一个data.table值递增data.table值

awk根据另一个文件中的匹配值替换字段值

根据 Microsoft PowerBI 中另一个 (B) 列的值替换 (A) 列的值

根据与另一个 data.table 的匹配更新 data.table 列

根据多列名称替换 data.table 中的值

根据另一个数组中的值替换数组中的值

如何根据 Spring Data JPA 中另一个属性的值返回 Map?

从另一个 data.table 替换一个 data.table 中的值