[英]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.