r - 线性插值多列data.table R
问题描述
我有多个data.table
对象,每个对象都包含来自传感器的 1-3 个测量值作为时间序列数据。每个传感器都有一个唯一的测量时间戳和一个唯一的采样间隔,这意味着没有两个data.tables
具有“匹配”的时间值:
> head(particle_counter)
time count3 count5 count10
1: 2020-04-17 19:45:08 42436 2848 479
2: 2020-04-17 19:46:08 43757 2999 470
3: 2020-04-17 19:47:08 43107 2967 448
4: 2020-04-17 22:59:27 41516 2394 184
5: 2020-04-17 23:00:27 42571 2645 322
6: 2020-04-17 23:01:27 70994 28007 18477
> head(box_data)
time pm1 pm25 pm10
1: 2020-04-18 00:46:00 1.13658 1.94190 3.56055
2: 2020-04-18 00:47:00 1.23021 2.02457 6.33052
3: 2020-04-18 00:48:00 1.33757 2.16237 5.85435
4: 2020-04-18 00:49:00 1.31169 2.08443 2.95454
5: 2020-04-18 00:50:00 1.52275 2.53015 6.15066
6: 2020-04-18 00:51:00 1.60951 2.23225 2.42537
例如,对于上述两个数据集,我想线性插值 的所有列,box_data
其时间戳与particle_counter
. 时间戳在particle_counter
其中EST
,box_data
这UTC
就是为什么它们看起来不同但指向相同的实际时间段的原因。
上述数据是一个非常小的样本,实际数据集每个包含 30,000 行。
我可以approxfun
用于单个列,例如:
> f1 <- approxfun(x = box_data$time, y = box_data$pm1, method = 'linear')
> f1(v = particle_counter$time)
[1] NA 1.149064 1.244525 3.137237 2.879353 3.103322
box_data
有没有一种好的(优雅的)方法可以在一次调用中将其应用于所有列?我相信应该有一种方法可以通过使用lapply
over .SD
或.SDcols
但不能完全弄清楚。
解决方案
推荐阅读
- php - REST API JWT 身份验证标头在 Bitnami Wordpress 实例中不起作用
- javascript - 如何在jQuery中动画后删除元素?
- html - 为什么将窗口大小的画布元素从内联更改为块删除滚动条?
- vue.js - vue-testing-library 出现“vue-cli-service 未被识别为内部或外部命令”错误
- c - _mm_load_si128 以相反的顺序加载数据
- javascript - 为什么只执行最后一个输出语句?
- python - 函数声明中的 Python TypeError
- php - 将 htmlspecialchars_decode 与 PDO 一起用于编辑表单?
- python - Python 3.9 找不到 Python pip 模块“没有名为‘...’的模块”
- php - Lumen 8 依赖注入 - 无法解析的依赖解析 [参数 #0 [
$app ]] 在类 Illuminate\Support\ServiceProvider