如何使用来自另一个变量的滞后位置获取变量的值?
How I get the value of a variable using the lag position that comes from another variable?
我正在尝试获取来自其他变量 (A) 给出的滞后位置的变量 (B) 的值。
变量是这样的:
# A B
# 1: 1 10
# 2: 1 20
# 3: 1 30
# 4: 1 40
# 5: 2 50
我希望输出 (C) 像这样,第一个值为零,条件从第二行开始:
# A B C
# 1: 1 10 0
# 2: 1 20 10
# 3: 1 30 20
# 4: 2 40 20
# 5: 2 50 30
我已经用循环完成了,但是因为它有大量的信息需要等待很多时间。希望有人能给我出出主意。
这是 dplyr
的一种方式:
library(dplyr)
x %>%
mutate(
C = c(0, B[(2:n()) - A[-1]])
)
# A B C
# 1: 1 10 0
# 2: 1 20 10
# 3: 1 30 20
# 4: 2 40 20
# 5: 2 50 30
它直接转换为 data.table
(行名中有冒号,我认为您可能正在使用该包)
library(data.table)
dt = as.data.table(x)
dt[, C := c(0, B[(2:.N) - A[-1]])]
dt
# A B C
# 1: 1 10 0
# 2: 1 20 10
# 3: 1 30 20
# 4: 2 40 20
# 5: 2 50 30
使用此数据:
x = read.table(text =' A B
1: 1 10
2: 1 20
3: 1 30
4: 2 40
5: 2 50', header = T)
我正在尝试获取来自其他变量 (A) 给出的滞后位置的变量 (B) 的值。
变量是这样的:
# A B
# 1: 1 10
# 2: 1 20
# 3: 1 30
# 4: 1 40
# 5: 2 50
我希望输出 (C) 像这样,第一个值为零,条件从第二行开始:
# A B C
# 1: 1 10 0
# 2: 1 20 10
# 3: 1 30 20
# 4: 2 40 20
# 5: 2 50 30
我已经用循环完成了,但是因为它有大量的信息需要等待很多时间。希望有人能给我出出主意。
这是 dplyr
的一种方式:
library(dplyr)
x %>%
mutate(
C = c(0, B[(2:n()) - A[-1]])
)
# A B C
# 1: 1 10 0
# 2: 1 20 10
# 3: 1 30 20
# 4: 2 40 20
# 5: 2 50 30
它直接转换为 data.table
(行名中有冒号,我认为您可能正在使用该包)
library(data.table)
dt = as.data.table(x)
dt[, C := c(0, B[(2:.N) - A[-1]])]
dt
# A B C
# 1: 1 10 0
# 2: 1 20 10
# 3: 1 30 20
# 4: 2 40 20
# 5: 2 50 30
使用此数据:
x = read.table(text =' A B
1: 1 10
2: 1 20
3: 1 30
4: 2 40
5: 2 50', header = T)