【发布时间】:2013-10-25 01:16:39
【问题描述】:
我有一组与我们的主要结果测量 (Y) 和协变量 (X1) 相对应的个人 (ID) 日期和时间。
如果X1 测量是在Y 变量被测量的日期/时间的+/- 24 小时内记录的,我的目标是替换每个Y 行的缺失X1 值.为了使这更容易可视化(并加载到 R 中),以下是数据当前的排列方式:
structure(list(ID = c(1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 3L, 3L, 3L, 3L), TIME = structure(1:15, .Label = c("01/01/2013 12:01",
"01/03/2013 08:49", "01/03/2013 20:52", "02/01/2013 05:00", "02/03/2013 05:30",
"02/03/2013 21:14", "02/05/2013 05:15", "02/12/2013 05:03", "02/15/2013 04:16",
"02/16/2013 04:12", "02/16/2013 21:02", "03/01/2010 17:58", "03/02/2010 00:10",
"03/03/2010 10:45", "03/04/2010 09:00"), class = "factor"), Y = structure(c(1L,
5L, 7L, 1L, 1L, 2L, 1L, 1L, 1L, 4L, 3L, 1L, 8L, 1L, 6L), .Label = c(".",
"22", "35", "4", "5", "6", "8", "9"), class = "factor"), X1 = structure(c(2L,
1L, 1L, 7L, 7L, 1L, 4L, 4L, 3L, 1L, 1L, 6L, 1L, 5L, 1L), .Label = c(".",
"0.1", "0.2", "0.4", "0.6", "0.9", "1.0"), class = "factor")), .Names = c("ID",
"TIME", "Y", "X1"), class = "data.frame", row.names = c(NA, -15L))
为了简化所需的输出,我只想显示具有非缺失 Y 值的行,这样最终产品将如下所示:
ID TIME Y X1
1 1 01/03/2013 08:49 5 .
2 1 01/03/2013 20:52 8 .
3 2 02/03/2013 21:14 22 .
4 2 02/16/2013 04:12 4 0.2
5 2 02/16/2013 21:02 35 .
6 3 03/02/2010 00:10 9 0.9
7 3 03/04/2010 09:00 6 0.6
是否可以 (1) 遍历多行并评估 24 小时的绝对值以获得 X1 和 Y 测量值之间的差异,以及 (2) 将 X1 的缺失值替换为那些在 +/- 24 小时窗口内的?
任何关于如何解决此问题的想法将不胜感激!
【问题讨论】:
-
如果在缺少
X1的 24 小时内有多个X1值怎么办? -
在您的帖子中添加reproducible example of your code 是一种礼貌,使用
dput。 -
输出第三行的0.2是从哪里来的?
-
我很抱歉——你是绝对正确的。第三行的'0.2'是错误的,应该改成缺少'.'。现在已解决此问题。对于我对这些内容的手动审查引起的混乱,我深表歉意。显然,我需要一个算法解决方案......
-
如果在 24 小时内有超过 1 个
X1值,我倾向于采用在时间上最接近Y测量值的值。
标签: r date datetime comparison row