首页 > 解决方案 > 如何使用公式中其他列的单个值计算新列?

问题描述

我有一个数据框,其中有一列X,如下所示:

    X
1   8
2   4
3   2
4   5
5   3
6   2
7   1
8   5

使用此列中的值,我想创建一个新列Z,它使用以下公式计算新值: 在此处输入图像描述 例如,要计算 Z1,计算如下所示: 在此处输入图像描述 Z1 的值为 0.005。

同样,Z2 的值为 -0.229,Z3 的值为 0.107。

我希望这个例子能清楚地说明我想为我的新 Z 柱实现什么。关于如何用 R 轻松解决这个问题的任何想法?也许在一个循环?

感谢任何提示!

标签: r

解决方案


也许以下计算您想要的 - 至少它重现了您的前 3 个给定数字:

(y$Z <- sapply(seq_len(nrow(y)), function(k) {
  i  <- seq_len(nrow(y))
  j <- seq_len(k)
  sum((y$X[i[-j]-k]-mean(y$X))*(y$X[i[-j]]-mean(y$X))) / sum((y$X-mean(y$X))^2)
}))
#[1]  0.00528169 -0.22887324  0.10739437  0.07746479 -0.29049296 -0.32042254
#[7]  0.14964789  0.00000000

可以改进不要一次又一次地计算相同的值。

数据:

y <- data.frame(X=c(8,4,2,5,3,2,1,5))

推荐阅读