对数据框列向量的下一个元素应用操作
Apply operation on the next element of the data frame column vector
假设我有一个这样的 df
df1 <- data.frame(ID = c(1, 2, 3, 4, 5, 6, 7, 8, 9),
var2 = c(2, 8, 0, 7, 3, 4, 1, 10, 13))
我想获得一个产生以下操作的值向量:
(x-median(x-1))/median(x-1)
其中 -1 指的是列中元素的索引。例如,对于列 var2
中的第一个元素,结果是:
(2-(median(c( 8, 0, 7, 3, 4, 1, 10, 13))) )/(median(c( 8, 0, 7, 3, 4, 1, 10, 13)))
-0.63636
谢谢!
使用sapply
,我们可以遍历var2
中每个值的索引,忽略该值并计算剩余值的median
并执行计算。
sapply(seq_along(df1$var2), function(i) {
med_i <- median(df1$var2[-i])
(df1$var2[i] - med_i)/med_i
})
#[1] -0.6364 1.2857 -1.0000 1.0000 -0.4545 -0.2000 -0.8182 1.8571 2.7143
假设我有一个这样的 df
df1 <- data.frame(ID = c(1, 2, 3, 4, 5, 6, 7, 8, 9),
var2 = c(2, 8, 0, 7, 3, 4, 1, 10, 13))
我想获得一个产生以下操作的值向量:
(x-median(x-1))/median(x-1)
其中 -1 指的是列中元素的索引。例如,对于列 var2
中的第一个元素,结果是:
(2-(median(c( 8, 0, 7, 3, 4, 1, 10, 13))) )/(median(c( 8, 0, 7, 3, 4, 1, 10, 13)))
-0.63636
谢谢!
使用sapply
,我们可以遍历var2
中每个值的索引,忽略该值并计算剩余值的median
并执行计算。
sapply(seq_along(df1$var2), function(i) {
med_i <- median(df1$var2[-i])
(df1$var2[i] - med_i)/med_i
})
#[1] -0.6364 1.2857 -1.0000 1.0000 -0.4545 -0.2000 -0.8182 1.8571 2.7143