我想引用數據幀列中的值,其中行索引取決於另一列的值。數據幀中的R間接引用
實施例:
value lag laggedValue
1 1 2
2 2 4
3 3 6
4 2 6
5 1 6
6 3 9
7 3 10
8 1 9
9 1 10
10 2
在Excel我用這個公式在列 「laggedValue
」:
=INDIRECT("B"&(ROW(B2)+C2))
我怎樣才能做到這一點在R數據幀?
謝謝!
我想引用數據幀列中的值,其中行索引取決於另一列的值。數據幀中的R間接引用
實施例:
value lag laggedValue
1 1 2
2 2 4
3 3 6
4 2 6
5 1 6
6 3 9
7 3 10
8 1 9
9 1 10
10 2
在Excel我用這個公式在列 「laggedValue
」:
=INDIRECT("B"&(ROW(B2)+C2))
我怎樣才能做到這一點在R數據幀?
謝謝!
對於相關的滯後值lag[r]
它看起來像你想創建一個新的列是value
的(r+lag[r])
個元素行r
(或缺少值,如果這是超出界限)。你可以這樣做:
dat$laggedValue <- dat$value[seq(nrow(dat)) + dat$lag]
dat
value lag laggedValue
1 1 1 2
2 2 2 4
3 3 3 6
4 4 2 6
5 5 1 6
6 6 3 9
7 7 3 10
8 8 1 9
9 9 1 10
10 10 2 NA
其他評論者提的是,它看起來像你剛剛加入value
和lag
列,因爲你的value
列都有1到10的元素,但這種解決方案,即使你的工作value
列中有其他數據存儲在其中。
我覺得這正是我今天所尋找的一段時間。明天我會用我的真實數據進行嘗試。非常感謝! – user3460194
假設同樣的事情@rawr這裏:
dat <- data.frame(value=c(1:10),
lag=c(1,2,3,2,1,3,3,1,1,2))
dat$laggedValue <- dat$value + dat$lag
dat
value lag laggedValue
1 1 1 2
2 2 2 4
3 3 3 6
4 4 2 6
5 5 1 6
6 6 3 9
7 7 3 10
8 8 1 9
9 9 1 10
10 10 2 12
你能明確指定什麼是列「B」和列「C」? – Chris
好像你只是加了'value'和'lag' – rawr
好吧,對不起,發佈這個問題時我很着急。 B欄是「價值」C是「滯後」。 laggedValue不僅是價值和滯後的總和,而且是「價值」列的輸入,滯後於「滯後」中指示的行數。愚蠢的例子,我同意。應該更具體。無論如何,josilber都沒錯。謝謝! – user3460194