【发布时间】:2022-01-09 00:46:16
【问题描述】:
我尝试为每一行插入 NA 值,但我只想在相邻的两个或更少的 NA 值时插入 NA 值。因此,例如在第 3 行中,三个 NA 彼此相邻,所以我不想插值,但在第一行和第二行中,相邻的两个或更少,所以我的目标是线性插值它们。有没有有效的处理方法?
我有一个看起来像这样的数据集:
df1:
ID string1 2018 2019 2020 2021 2022 string2
1: a1 x2 3 3 NA 4 4 si
2: a2 g3 5 5 NA NA 1 q2
3: a3 n2 11 NA NA NA 3 oq
4: a4 m3 3 NA 9 8 8 mx
5: a5 2w 9 1 NA 5 NA ix
6: a6 ps2 2 NA 7 4 4 p2
7: a7 kg2 6 NA NA NA 6 2q
为了重现性:
df1 = data.table(
ID = c("a1", "a2", "a3", "a4", "a5", "a6", "a7"),
"string1" = c("x2", "g3", "n2", "m3", "2w", "ps2", "kg2"),
"2018" = c(3,5,11,3,9,2,6),
"2019" = c(3,5,NA,NA,1,NA,NA),
"2020" = c(NA,NA,NA,9,NA,7,NA),
"2021" = c(4,NA,NA,8,5,4,NA),
"2022" = c(4,1,3,8,NA,4,6),
"string2" = c("si", "q2", "oq", "mx", "ix", "p2", "2q"))
我尝试获取一个看起来像这样的data.table:
ID string1 2018 2019 2020 2021 2022 string2
1: a1 x2 3 3.00 3.5 4 4 si
2: a2 g3 5 5.00 4.3 3 1 q2
3: a3 n2 11 NA NA NA 3 oq
4: a4 m3 3 8.25 9.0 8 8 mx
5: a5 2w 9 1.00 -0.3 5 17 ix
6: a6 ps2 2 8.00 7.0 4 4 p2
7: a7 kg2 6 NA NA NA 6 2q
感谢您的任何建议!
【问题讨论】:
-
嗨@fjurt,请在下面找到满足您要求的可能解决方案。请注意,如果我没记错的话,您的问题中所需的结果表中有两个拼写错误:(i)第 5 行,col 2020,应该是
-0.5而不是-0.3,(ii)第 5 行,col 2022,应该是5而不是17。干杯。
标签: r data.table