如果这是多余的,我深表歉意,但我已尝试寻找解决方案,但没有找到任何似乎是我的问题的答案。所以,我有一堆变量的时间序列数据。一些变量(连续)在 1000hz 下记录,其他变量(分类)在 500hz 下记录。我想在 R 中对齐它们,使分类变量与连续变量具有相同的行数。换句话说,我想合并两个数据框并自动填充分类变量的空白,以便我的数据如下所示:
t_肌电图 | CF_01 | CF_02 |
---|---|---|
0 | -0.01796875 | 0.01234375 |
0.001 | 0.001875 | 0.05125 |
0.002 | 0.00828125 | -0.04140625 |
0.003 | -0.0125 | -0.005625 |
0.004 | -0.00765625 | 0.00078125 |
0.005 | -0.01 | 0.02234375 |
0.006 | 0.01515625 | -0.01296875 |
0.007 | -0.01375 | -0.070625 |
0.008 | 0.0096875 | 0.1534375 |
0.009 | -0.05203125 | 0.02984375 |
0.01 | 0.1234375 | 0.00765625 |
0.011 | -0.0596875 | 0.005625 |
0.012 | -0.09296875 | -0.001875 |
0.013 | -0.0834375 | -0.1128125 |
0.014 | -0.009375 | 0.0090625 |
0.015 | -0.00609375 | 0.02 |
0.016 | 0.00890625 | 0.0209375 |
0.017 | 0.02671875 | 0.00375 |
0.018 | -0.001875 | -0.0003125 |
0.019 | -0.00171875 | 0.00171875 |
还有这个:
t_运动学 | 相 | 跨步停止 |
---|---|---|
0 | 摇摆 | A |
0.002 | 摇摆 | A |
0.004 | 摇摆 | A |
0.006 | 摇摆 | A |
0.008 | 摇摆 | A |
0.01 | 摇摆 | A |
0.012 | 摇摆 | A |
0.014 | 立场 | A |
0.016 | 立场 | A |
0.018 | 立场 | A |
最终看起来像这样:
t_肌电图 | CF_01 | CF_02 | t_运动学 | 相 | 跨步停止 |
---|---|---|---|---|---|
0 | -0.01796875 | 0.01234375 | 0 | 摇摆 | A |
0.001 | 0.001875 | 0.05125 | 0.001 | 摇摆 | A |
0.002 | 0.00828125 | -0.04140625 | 0.002 | 摇摆 | A |
0.003 | -0.0125 | -0.005625 | 0.003 | 摇摆 | A |
0.004 | -0.00765625 | 0.00078125 | 0.004 | 摇摆 | A |
0.005 | -0.01 | 0.02234375 | 0.005 | 摇摆 | A |
0.006 | 0.01515625 | -0.01296875 | 0.006 | 摇摆 | A |
0.007 | -0.01375 | -0.070625 | 0.007 | 摇摆 | A |
0.008 | 0.0096875 | 0.1534375 | 0.008 | 摇摆 | A |
0.009 | -0.05203125 | 0.02984375 | 0.009 | 摇摆 | A |
0.01 | 0.1234375 | 0.00765625 | 0.01 | 摇摆 | A |
0.011 | -0.0596875 | 0.005625 | 0.011 | 摇摆 | A |
0.012 | -0.09296875 | -0.001875 | 0.012 | 摇摆 | A |
0.013 | -0.0834375 | -0.1128125 | 0.013 | 摇摆 | A |
0.014 | -0.009375 | 0.0090625 | 0.014 | 立场 | A |
0.015 | -0.00609375 | 0.02 | 0.015 | 立场 | A |
0.016 | 0.00890625 | 0.0209375 | 0.016 | 立场 | A |
0.017 | 0.02671875 | 0.00375 | 0.017 | 立场 | A |
0.018 | -0.001875 | -0.0003125 | 0.018 | 立场 | A |
0.019 | -0.00171875 | 0.00171875 | 0.019 | 立场 | A |
此外,分类数据中有很多NA,我希望保留它们。我能找到的所有信息都更适合不平衡数据或缺失值的插补。这也不是真正的预测,因为我真的只是对填补分类变量的时间间隙感兴趣。
从您的单帧来看,我们确实有两个 3 列框架。
quux1 <- structure(list(t_emg = c(0, 0.001, 0.002, 0.003, 0.004, 0.005, 0.006, 0.007, 0.008, 0.009, 0.01, 0.011, 0.012, 0.013, 0.014, 0.015, 0.016, 0.017, 0.018, 0.019), CF_01 = c(-0.01796875, 0.001875, 0.00828125, -0.0125, -0.00765625, -0.01, 0.01515625, -0.01375, 0.0096875, -0.05203125, 0.1234375, -0.0596875, -0.09296875, -0.0834375, -0.009375, -0.00609375, 0.00890625, 0.02671875, -0.001875, -0.00171875), CF_02 = c(0.01234375, 0.05125, -0.04140625, -0.005625, 0.00078125, 0.02234375, -0.01296875, -0.070625, 0.1534375, 0.02984375, 0.00765625, 0.005625, -0.001875, -0.1128125, 0.0090625, 0.02, 0.0209375, 0.00375, -0.0003125, 0.00171875)), class = "data.frame", row.names = c(NA, -20L))
quux2 <- structure(list(t_kinematics = c(0, 0.002, 0.004, 0.006, 0.008, 0.01, 0.012, 0.014, 0.016, 0.018), Phase = c("swing", "swing", "swing", "swing", "swing", "swing", "swing", "stance", "stance", "stance"), stride_stop = c("A", "A", "A", "A", "A", "A", "A", "A", "A", "A")), row.names = c(NA, 10L), class = "data.frame", na.action = structure(11:20, names = c("11", "12", "13", "14", "15", "16", "17", "18", "19", "20"), class = "omit"))
使用此功能,我们将使用
findInterval
将其他列映射到时间间隔。
intvl <- findInterval(quux1$t_emg, quux2$t_kinematics)
out <- cbind(quux1, lapply(quux2[,-1], `[`, intvl))
out
# t_emg CF_01 CF_02 Phase stride_stop
# 1 0.000 -0.01796875 0.01234375 swing A
# 2 0.001 0.00187500 0.05125000 swing A
# 3 0.002 0.00828125 -0.04140625 swing A
# 4 0.003 -0.01250000 -0.00562500 swing A
# 5 0.004 -0.00765625 0.00078125 swing A
# 6 0.005 -0.01000000 0.02234375 swing A
# 7 0.006 0.01515625 -0.01296875 swing A
# 8 0.007 -0.01375000 -0.07062500 swing A
# 9 0.008 0.00968750 0.15343750 swing A
# 10 0.009 -0.05203125 0.02984375 swing A
# 11 0.010 0.12343750 0.00765625 swing A
# 12 0.011 -0.05968750 0.00562500 swing A
# 13 0.012 -0.09296875 -0.00187500 swing A
# 14 0.013 -0.08343750 -0.11281250 swing A
# 15 0.014 -0.00937500 0.00906250 stance A
# 16 0.015 -0.00609375 0.02000000 stance A
# 17 0.016 0.00890625 0.02093750 stance A
# 18 0.017 0.02671875 0.00375000 stance A
# 19 0.018 -0.00187500 -0.00031250 stance A
# 20 0.019 -0.00171875 0.00171875 stance A
如果你确实需要
t_kinematics
,那就从t_emg
复制过来:
out$t_kinematics <- out$t_emg