r - Excel中R中的OFFSET函数

标签 r excel offset

我正在尝试从 Excel 模拟 OFFSET 函数。我知道这可以针对单个值完成,但我想返回一个范围。我想返回一组偏移量为 1、组大小为 2 的值。例如,在第 4 行,我想要一组包含 a 列、第 3 行和第 2 行的值。抱歉,我我被难住了。

是否可以使用 cbind 或类似工具将此结果作为另一列添加到数据框中?或者,我可以在向量化函数中使用它,以便我可以对结果求和或求平均值吗?

模型示例:

> df <- data.frame(a=1:10)
> df
    a
1   1
2   2
3   3
4   4
5   5
6   6
7   7
8   8
9   9
10 10

> #PROCESS 

> df
    a   b
1   1   NA
2   2   (1)
3   3   (1,2)
4   4   (2,3)
5   5   (3,4)
6   6   (4,5)
7   7   (5,6)
8   8   (6,7)
9   9   (7,8)
10 10   (8,9)

最佳答案

这应该可以解决问题:

df$b1 <- c(rep(NA, 1), head(df$a, -1))
df$b2 <- c(rep(NA, 2), head(df$a, -2))

请注意,结果必须位于两列中,因为数据框中的列仅支持简单数据类型。 (除非您想求助于复数。)head如果参数为负,则从尾部删除参数的负值,尝试 head(1:10, -2)rep是重复,c是串联。 <-分配会添加一个新列(如果尚不存在)。

Excel 中所谓的 OFFSET 有时也称为滞后

编辑:根据 Greg Snow 的评论,这里有一个更优雅的版本,但也更难以理解:

df <- cbind(df, as.data.frame((embed(c(NA, NA, df$a), 3))[,c(3,2)]))

逐个组件地尝试它,看看它是如何工作的。

关于r - Excel中R中的OFFSET函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15136062/

相关文章:

从给定 X 值的密度函数中检索 Y 值

Excel 将表格顺时针旋转(不是转置)90 度

javascript - JQuery 遍历字符串的出现次数

r - simpleLoess 错误 : NA/NaN/Inf in foreign function call

从 r 中的树状图中删除 x 轴标签

r - 为什么运行 `f <- function(x){x} %>% f` 不会抛出错误?

javascript - 从顶部获取元素的位置

excel - 如何每隔一分钟/10 秒保存所有 Excel 文件?

mysql - 保留所有有重复项的记录并获取每个重复项的最低 id

c - 如何计算结构的偏移量?在这里解释一下 printf 语句?