r - 您如何根据每行的唯一子集的函数定义列?
问题描述
在处理时间序列数据时,我在创建列时遇到了一些麻烦。该表具有以下相关列:t
、i
、j
和val
。我想要做的是创建一个距离加权和的列val
,基于具有相同i
&t
值的观察。如果我使用在变量 ( test_t
, test_i
, test_j
) 中定义的显式值,我可以获得一个单列条目,如下所示:
sum(data[t == test_t & i == test_i & j != test_j
][,dist:=sqrt((test_j - j)^2)
][,adjustedVal:=val/dist
][, adjustedVal])
如何将其应用于整个数据表?我的第一个想法是做这样的事情
data[,adjustedVal:=sum(data[i == i, j != j, t == t] #and so on like above
但显然这在范围界定方面存在重大问题。有没有办法确定这个范围,以便我可以在 i(数据中的列)和 i(此表达式中每一行中 i 列的值)之间进行描述?
解决方案
根据标题,我认为您正在寻找
DT[, out :=
DT[DT, on=.(t, i), by=.EACHI,
sum(i.val / abs(i.j - x.j[x.j != i.j]))
]$V1
]
样本数据
DT <- data.table(t=c(1,1,1,2,2,2,2),
i=c(1,1,1,2,2,2,2),
j=c(1,2,3,4,5,6,7),
val=c(1,2,1,2,3,4,5))
输出:
t i j val out
1: 1 1 1 1 1.500000
2: 1 1 2 2 4.000000
3: 1 1 3 1 1.500000
4: 2 2 4 2 3.666667
5: 2 2 5 3 7.500000
6: 2 2 6 4 10.000000
7: 2 2 7 5 9.166667
推荐阅读
- angular - Angular 11 应用程序无法在 Safari 中运行
- android - 在实时数据库 Firebase 中处理同时更新时出现问题
- html - 为地址标签创建可打印的 HTML 页面
- html - jQuery Mobile 上的关闭按钮关闭整个页面
- excel - 将变量导出到 Excel
- scala - Scala Akka Typed - 使用 ask 在行为内部发送请求
- python - 在python中将month_year值转换为月份名称和年份列
- flutter - 在 Flutter PageViewModel 中移除标题周围的光环
- firebase - Flutter 从 firebase 获取特定数据
- excel - 宏将行移动到另一个工作表但忽略新工作表中的公式