【发布时间】:2021-10-25 00:35:26
【问题描述】:
我正在处理癌症登记数据。在以下数据示例 (ex_data) 中,变量 id 和 diagnosis_yr 分别代表癌症诊断时的 ID 和年份。 x_2005 到 x_2010 列和 y_2005 到 y_2010 列分别代表每年(2005 年到 2010 年)的 x 和 y 状态)。在我的实际工作数据中,我有很多年(2005-2020)的专栏。我想通过排除 NA 从最早可用年份、最新可用年份和诊断年份(即“wanted”中的 x_earliest, y_latest,x_at_diagnosis,y_at_diagnosis 变量)中提取 x 和 y 值.例如,对于 id 1,我想通过跳过 NA 从最早的一年中提取 x 值,从最近一年中提取 y 值。对于诊断年份的 x 和 y 值,如果诊断年份有 NA,我想跳过 NA 并提取前一年的可用数据。如何实现在 R 中获取想要的变量?
library(tidyverse)
#example data
ex_data <- tribble(
~id,~diagnosis_yr,~x_2005,~x_2006,~x_2007,~x_2008,~x_2009,~x_2010,~y_2005,~y_2006,~y_2007,~y_2008,~y_2009,~y_2010,
1, 2007, NA, NA, 1, 2, 2, 3, "a", "b", "c", "d", "e", NA,
2, 2008, 1, 3, 1, NA, 1, 2, NA, "b", "b", "e", "d", "d",
3, 2010, NA, 2, 2, 2, 3, NA, "a", "b", "c", NA, NA, NA,
4, 2009, 1, 3, 1, NA, 1, 2, NA, NA, NA, NA, NA, NA,
5, 2005, NA, 1, 1, 2, 2, 3, "a", "b", "c", "d", "e", "e"
)
#wanted variables
wanted <- tribble(
~id,~diagnosis_yr,~x_earliest,~y_latest,~x_at_diagnosis,~y_at_diagnosis,
1, 2007, 1, "e", 1, "c",
2, 2008, 1, "d", 1, "e",
3, 2010, 2, "c", 3, "c",
4, 2009, 1, NA, 1, NA,
5, 2005, 1, "e", NA, "a"
)
【问题讨论】: