我試圖獲取來自其他變數 (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
我已經用回圈完成了它,但是因為它的大量資訊需要等待很多時間。我希望有人能給我一個想法。
uj5u.com熱心網友回復:
這是一種方法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)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/384593.html
