简体   繁体   中英

R indirect reference in data frame

I would like to refer to values in a data frame column with the row index being dependent on the value of another column.

Example:

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  

In Excel I use this formula in column " laggedValue ":

=INDIRECT("B"&(ROW(B2)+C2))

How can I do this in an R data frame?

Thanks!

Assuming the same thing as @rawr here:

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

For row r with associated lag value lag[r] it looks like you're trying to create a new column that is the (r+lag[r]) th element of value (or a missing value if this is out of bounds). You can do this with:

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

Other commenters are mentioning that it looks like you're just adding the value and lag columns because your value column has the elements 1 through 10, but this solution will work even when your value column has other data stored in it.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM