r - 如何根据列匹配值?
问题描述
我想根据 和 确定在特定日期进行的测量id
长度id1
。测量长度记录在d1...d5
变量中,并d_day
定义了我正在寻找的测量长度。例如,在第一种情况下,我在d3
测量长度等于30
. 我尝试了这些which
功能,但肯定有更快的解决方案。
期望的输出
数据结构:
Sample data:
structure(list(id = c(101, 101), id_1 = c(1, 2), d1 = c(15, 0
), d2 = c(30, 15), d3 = c(25, 30), d4 = c(15, 30), d5 = c(15,
60), d_day = c("d3", "d1")), class = c("spec_tbl_df", "tbl_df",
"tbl", "data.frame"), row.names = c(NA, -2L), spec = structure(list(
cols = list(id = structure(list(), class = c("collector_double",
"collector")), id_1 = structure(list(), class = c("collector_double",
"collector")), d1 = structure(list(), class = c("collector_double",
"collector")), d2 = structure(list(), class = c("collector_double",
"collector")), d3 = structure(list(), class = c("collector_double",
"collector")), d4 = structure(list(), class = c("collector_double",
"collector")), d5 = structure(list(), class = c("collector_double",
"collector")), d_day = structure(list(), class = c("collector_character",
"collector"))), default = structure(list(), class = c("collector_guess",
"collector")), skip = 1L), class = "col_spec"))
解决方案
这是否有效:
library(dplyr)
library(tidyr)
df %>% pivot_longer(-c(id, id_1, d_day)) %>% filter(d_day == name) %>%
select(id, id_1, 'd_day_h' = value)
# A tibble: 2 x 3
id id_1 d_day_h
<dbl> <dbl> <dbl>
1 101 1 25
2 101 2 0
推荐阅读
- c - 运行此程序时出现分段错误
- python - 从 http 和 javaScript 站点抓取数据
- c++ - 在构造函数初始化列表中初始化 POD 类型
- ios - 如何将新的 UICollectionViewController 推送到单元格单元格内的 navigationController
- node.js - 有没有办法检查是否刚刚使用 Okta 身份验证 API 创建了新帐户?
- c++ - SDL_GAMECONTROLLERCONFIG 与 SDL_GameControllerAddMappingsFromFile
- java - 仅使用本地锁从 BST 中进行多线程删除
- javascript - 为什么 web worker 版本运行时间更长?
- excel - 刷新数据链接到 MS Access 查询时,需要允许 Excel 中的列顺序(字母顺序)更改
- html - 使用类或id都不会影响这个div的特性