r - 将新的推算数据按组插入数据表中
问题描述
我有一个数据表,我想在两年之间插入新行估算值。这将在许多 ID 组上完成。我该如何将数据复制到新行中?
# data table
dt <- data.table(ID=c(rep(1:3,each=3)),
attrib1=rep(c("sdf","gghgf","eww"),each=3),
attrib2=rep(c("444","222","777"),each=3),
Year = rep(c(1990, 1995, 1996), 3),
value = c(12,6,7,6,3,1,9,17,18))
因此对于所有组 (ID),年份将从 1990 年到 1996 年,而 1990 年和 1995 年的 2 个值将被线性估算。所有其他属性将保持不变并被复制到新行中。
我已经完成了这个非常长的工作并尝试了一个自定义功能,但无济于事
解决方案
您可以使用tidyr::complete
来扩展年份和zoo::na.approx
值的插值。
library(dplyr)
dt %>%
group_by(ID, attrib1, attrib2) %>%
tidyr::complete(Year = min(Year):max(Year)) %>%
mutate(value = zoo::na.approx(value))
# ID attrib1 attrib2 Year value
# <int> <chr> <chr> <dbl> <dbl>
# 1 1 sdf 444 1990 12
# 2 1 sdf 444 1991 10.8
# 3 1 sdf 444 1992 9.6
# 4 1 sdf 444 1993 8.4
# 5 1 sdf 444 1994 7.2
# 6 1 sdf 444 1995 6
# 7 1 sdf 444 1996 7
# 8 2 gghgf 222 1990 6
# 9 2 gghgf 222 1991 5.4
#10 2 gghgf 222 1992 4.8
# … with 11 more rows
推荐阅读
- javascript - 我想将 API 密钥附加到我的 URL 以访问数据库,问题是将其附加到文件名
- android - DatabaseException:类 java.util.List 具有泛型类型参数,请改用 GenericTypeIndicator
- kotlin - Jooq 模拟 fetchInto
- c - 带线程的代码比没有线程花费的时间更长
- python - 从 Artifactory 使用 pip install 运行 requeriments.txt
- jira - 使用逻辑应用从 SharePoint 创建 JIRA 问题
- python - 如何在 python 中使用对象作为 vaue 进行多处理
- django - 'Post' 对象没有属性 'get_absolute_url' Django
- python - 在 Pandas 中打开和读取 zip 文件夹中的 txt 文件时出现问题
- arrays - 在c中将字符串转换为二维数组