【发布时间】:2017-10-25 11:09:54
【问题描述】:
我有一个格式如下的数据表:
id c1 c2
1 1 NA
1 1 NA
1 1 10
1 1 NA
1 1 NA
1 1 10
1 1 NA
1 1 NA
1 1 11
1 1 NA
1 1 NA
1 1 11
2 1 NA
2 1 12
2 1 NA
2 1 NA
2 1 12
从这个数据表中,我想更新 c2 中两个值之间的所有 NA,如下所示:
id c1 c2
1 1 NA
1 1 NA
1 1 10
1 1 10
1 1 10
1 1 10
1 1 NA
1 1 NA
1 1 11
1 1 11
1 1 11
1 1 11
2 1 NA
2 1 12
2 1 12
2 1 12
2 1 12
【问题讨论】:
-
你能澄清一下吗:“我想更新 c2 中两个值之间的所有 NA,如下所示:”
-
我想让 c2 的值在 c2 的范围开始和结束之间相同
-
每个值最初总是只有 2 个吗?
-
我不明白你的问题。 “c2的范围开始和结束”是什么意思?在我看来,您正在随机更改
NAs 以获取来自列c2的值。您能否提供一套明确的规则,或者更好的是,展示您生成第二个表格的尝试。 -
indx <- setDT(df)[!is.na(c2), .(min(.I):max(.I)), by = c2] ; df[indx$V1, c2 := indx$c2]或许
标签: r dplyr data.table