r - R data.table 函数根据同一行上的引用列号复制值
问题描述
我有一个如下所示的 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")
推荐阅读
- ios - 如何在暗模式下单击按钮时使状态栏文本颜色变暗?
- php - 如何在包含图像的所有现有帖子上添加 features_image 字段
- python - 如何在不更改 ctime 的情况下写入文件?
- javascript - 网页管理中未加载 ejabberd addition.js 和 style.css 文件
- visual-studio-code - 我可以在 MarkDown 中使用页面链接绘制流程图吗?
- java - Firebase 实时数据库 Android:如何一次显示数据和部分
- android - DatePickerDialog 不会从 xml 进入微调器模式
- html - 如果在图片源标签中找不到图像,则备用图像
- windows - Windows IIS 重定向另一个站点
- c# - 从字符串变量复制并将数据粘贴到文本框 WPF