【发布时间】:2021-09-25 21:43:54
【问题描述】:
我正在尝试使用大型 data.table 以 2 的限制分组来推进最后一次观察。这里有很多复杂的解决方案,但似乎没有一个包含所有 3 个元素:一个类似于 na.locf 的函数,在 data.table 中按组划分。
我的数据如下:
df <- structure(list(country = c("USA", "USA", "USA", "USA", "USA",
"FR", "FR", "FR", "FR", "FR"), values = c(2, 1, NA, NA, NA, 2,
1, 2, NA, NA)), class = c("data.table", "data.frame"), row.names = c(NA,
-10L))
country values
1: USA 2
2: USA 1
3: USA NA
4: USA NA
5: USA NA
6: FR 2
7: FR 1
8: FR 2
9: FR NA
10: FR NA
我希望它看起来像这样:
country values
1 USA 2
2 USA 1
3 USA 1
4 USA 1
5 USA NA
6 FR 2
7 FR 1
8 FR 2
9 FR 2
10 FR 2
【问题讨论】:
-
这似乎正是您所需要的:stackoverflow.com/questions/38822441/…。只需将
Price和ID分别更改为values和country。 -
那里缺少使用 data.table 的分组元素。这些似乎都没有为我提供解决方案。 @MarceloAvila 不幸的是,该解决方案既包含最后一个已知观察的向后携带,也包括向前携带。我已经搞砸了,但我无法让它工作。
-
这似乎很有用
df$values |> dendextend::na_locf(recursive = F) |> dendextend::na_locf(recursive = F)
标签: r data.table