繁体   English   中英

R data.table 函数根据同一行上的引用列号复制值

[英]R data.table function to copy a value based on a reference column number on the same row

我有一个如下所示的 data.table:

| key | zone_1 | zone_2 | zone_3 |  v1  |  v2  |
|  A  |   4.3  |   6.9  |   12.0 |   2  |      |
|  B  |   3.7  |   5.2  |    9.7 |   4  |      |

我需要一个函数来将 v1 中引用的列的值复制到每行的 v2,因此它看起来像这样:

| key | zone_1 | zone_2 | zone_3 |  v1  |  v2  |
|  A  |   4.3  |   6.9  |   12.0 |   2  |  4.3 |
|  B  |   3.7  |   5.2  |    9.7 |   4  |  9.7 |

您可以为子集df提供一个两列矩阵,其中第一列指定行,第二列指定列。

# setDF(df) if df is a data.table class object

df$v2 <- df[cbind(seq(nrow(df)), df$v1)]

df
#   key zone_1 zone_2 zone_3 v1   v2
# 1   A    4.3    6.9   12.0  2  4.3
# 2   B    3.7    5.2    9.7  4  9.7

使用的数据

structure(list(key = c("A", "B"), zone_1 = c(4.3, 3.7), zone_2 = c(6.9, 
5.2), zone_3 = c(12, 9.7), v1 = c(2L, 4L), v2 = c("4.3", " 9.7"
)), row.names = c(NA, -2L), class = "data.frame")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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