不同长度的CBIND矩阵

问题描述 投票:0回答:0

最初的问题是如果满足另一列中的条件,则将数据从一列复制到另一列;请参阅我之前的帖子(如果满足另一列中的条件,则将数据从一列复制到另一列)(致谢@jay.sf)

在真实数据框上我得到以下错误

“data.frame(..., check.names = FALSE) 中的错误:参数暗示行数不同:1、0”

这是因为我正在尝试将“dfa”与“df23”进行绑定,而“df23”在行长度方面不等于 dfa。

有没有办法否定这一点——我已经尝试过 cbind 的替代方法,例如bind_cols 但是它只适用于研究 ID 109 并忽略记录 93,71,75


dfa <- data.frame(
  study_id = c(93, 71, 75, 109, 109),
  name = c(
    "Noradrenaline.start.time.variation", "Noradrenaline.stop.time.variation",
    "Noradrenaline.stop.time.variation", "Noradrenaline.stop.time.variation",
    "Vasopressin.stop.time.variation"
  ),
  value = c(FALSE, FALSE, FALSE, FALSE, FALSE),
  expression = c(
    "(norad_start_diff > -1 & norad_start_diff < 1)", "(norad_stop_diff > -1 & norad_stop_diff < 1)",
    "(norad_stop_diff > -1 & norad_stop_diff < 1)", "(norad_stop_diff > -1 & norad_stop_diff < 1)",
    "(vaso_stop_diff > -1 & vaso_stop_diff < 1)"
  ))

df23 <- data.frame(
  study_id = c(
    6, 8, 12, 18, 25, 26, 38, 40, 42, 47, 50, 51, 65, 69, 71, 72, 74, 75, 80, 81,
    85, 86, 87, 88, 92, 93, 98, 99, 101, 106
  ),
  true_adrenaline_on = as.POSIXct(
    c(
      "2020-09-17 20:58:00", NA, NA, "2020-10-12 16:18:00", NA, NA,
      "2020-11-30 18:34:00", NA, NA, NA, "2020-12-17 17:07:00", NA,
      NA, NA, NA, NA, NA, NA, NA, "2021-01-29 16:19:00", NA, NA, NA,
      NA, NA, NA, "2021-02-17 14:28:00", "2021-02-18 15:00:00", NA,
      NA
    ),
    tz = "UTC"
  ),
  verification_true_adren_on = as.POSIXct(
    c(
      "2020-09-17 20:58:00", NA, NA, "2020-10-12 16:18:00", NA, NA,
      "2020-11-30 18:34:00", NA, NA, NA, "2020-12-17 17:07:00", NA,
      NA, NA, NA, NA, NA, NA, NA, "2021-01-29 16:19:00", NA, NA, NA,
      NA, NA, NA, "2021-02-17 14:28:00", "2021-02-18 14:52:00", NA,
      NA
    ),
    tz = "UTC"
  ),
  true_noradrenaline_on = as.POSIXct(
    c(
      "2020-09-17 23:00:00", "2020-09-21 14:10:00", "2020-10-01 16:03:00",
      "2020-10-12 16:18:00", NA, "2020-11-05 14:15:00", "2020-11-30 18:34:00",
      "2020-12-01 22:21:00", "2020-12-07 14:00:00", "2020-12-15 01:00:00",
      "2020-12-17 17:07:00", "2020-12-17 23:08:00", "2021-01-11 22:27:00",
      NA, "2021-01-20 01:00:00", "2021-01-18 17:12:00", NA, "2021-01-21 19:00:00",
      "2021-01-28 16:50:00", "2021-01-29 16:19:00", "2021-02-03 21:00:00",
      "2021-02-04 18:00:00", "2021-02-05 00:48:00", "2021-02-05 14:03:00",
      "2021-02-11 13:35:00", "2021-02-12 04:00:00", "2021-02-17 14:28:00",
      "2021-02-18 14:52:00", NA, "2021-02-25 13:00:00"
    ),
    tz = "UTC"
  ),
  verification_true_norad_on = as.POSIXct(
    c(
      "2020-09-17 23:00:00", "2020-09-21 14:10:00", "2020-10-01 16:03:00",
      "2020-10-12 16:18:00", NA, "2020-11-05 14:15:00", "2020-11-30 18:34:00",
      "2020-12-01 22:21:00", "2020-12-07 14:00:00", "2020-12-15 01:00:00",
      "2020-12-17 17:07:00", "2020-12-17 23:08:00", "2021-01-11 22:27:00",
      NA, "2021-01-20 01:20:00", "2021-01-18 17:12:00", NA, "2021-01-21 19:20:00",
      "2021-01-28 16:50:00", "2021-01-29 16:19:00", "2021-02-03 21:00:00",
      "2021-02-04 18:00:00", "2021-02-05 00:48:00", "2021-02-05 14:03:00",
      "2021-02-11 13:35:00", "2021-02-12 05:05:00", "2021-02-17 14:28:00",
      "2021-02-18 14:52:00", NA, "2021-02-25 13:05:00"
    ),
    tz = "UTC"
  ),
  true_metaraminol_on = as.POSIXct(
    c(
      NA_character_, NA_character_, NA_character_, NA_character_,
      NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
      NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
      NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
      NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
      NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
      NA_character_
    ),
    tz = "UTC"
  ),
  verification_true_met_on = as.POSIXct(
    c(
      NA_character_, NA_character_, NA_character_, NA_character_,
      NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
      NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
      NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
      NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
      NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
      NA_character_
    ),
    tz = "UTC"
  ),
  true_phenylephrine_on = as.POSIXct(
    c(
      NA_character_, NA_character_, NA_character_, NA_character_,
      NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
      NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
      NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
      NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
      NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
      NA_character_
    ),
    tz = "UTC"
  ),
  verification_true_phen_on = as.POSIXct(
    c(
      NA_character_, NA_character_, NA_character_, NA_character_,
      NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
      NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
      NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
      NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
      NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
      NA_character_
    ),
    tz = "UTC"
  ),
  true_vasopressin_on = as.POSIXct(
    c(
      "2020-09-18 09:00:00", NA, NA, "2020-10-12 23:00:00", NA, NA,
      NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
      NA, NA, NA, NA, NA, "2021-02-18 18:00:00", NA, NA
    ),
    tz = "UTC"
  ),
  verification_true_vaso_on = as.POSIXct(
    c(
      "2020-09-18 09:00:00", NA, NA, "2020-10-12 23:00:00", NA, NA,
      NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
      NA, NA, NA, NA, NA, "2021-02-18 18:00:00", NA, NA
    ),
    tz = "UTC"
  ),
  true_adrenaline_off = as.POSIXct(
    c(
      "2020-09-18 09:00:00", NA, NA, "2020-10-13 13:00:00", NA, NA,
      "2020-12-03 08:00:00", NA, NA, NA, "2020-12-17 19:00:00", NA,
      NA, NA, NA, NA, NA, NA, NA, "2021-01-30 09:00:00", NA, NA, NA,
      NA, NA, NA, "2021-02-17 16:00:00", "2021-02-19 22:00:00", NA,
      NA
    ),
    tz = "UTC"
  ),
  verification_true_adren_off = as.POSIXct(
    c(
      "2020-09-18 09:00:00", NA, NA, "2020-10-13 13:00:00", NA, NA,
      "2020-12-03 08:00:00", NA, NA, NA, "2020-12-17 19:00:00", NA,
      NA, NA, NA, NA, NA, NA, NA, "2021-01-30 09:00:00", NA, NA, NA,
      NA, NA, NA, "2021-02-17 16:00:00", "2021-02-19 22:00:00", NA,
      NA
    ),
    tz = "UTC"
  ),
  true_noradrenaline_off = as.POSIXct(
    c(
      "2020-09-21 07:00:00", "2020-09-21 22:00:00", "2020-10-01 17:00:00",
      "2020-10-14 18:00:00", NA, "2020-11-06 18:00:00", "2020-12-02 23:00:00",
      "2020-12-02 11:00:00", "2020-12-07 18:00:00", "2020-12-15 17:00:00",
      "2020-12-19 09:00:00", "2020-12-20 00:00:00", "2021-01-12 01:00:00",
      NA, "2021-01-20 16:00:00", "2021-01-19 04:00:00", NA, "2021-01-22 05:00:00",
      "2021-01-29 05:00:00", "2021-01-30 05:00:00", "2021-02-04 05:00:00",
      "2021-02-05 09:00:00", "2021-02-05 22:00:00", "2021-02-08 07:00:00",
      "2021-02-12 08:00:00", "2021-02-12 09:00:00", "2021-02-18 04:00:00",
      "2021-02-25 06:52:00", NA, "2021-02-26 06:00:00"
    ),
    tz = "UTC"
  ),
  verification_true_norad_off = as.POSIXct(
    c(
      "2020-09-21 07:00:00", "2020-09-21 22:00:00", "2020-10-01 17:00:00",
      "2020-10-14 19:00:00", NA, "2020-11-06 18:00:00", "2020-12-02 23:00:00",
      "2020-12-02 11:00:00", "2020-12-07 18:00:00", "2020-12-15 17:00:00",
      "2020-12-19 09:00:00", "2020-12-20 00:00:00", "2021-01-12 01:12:00",
      NA, "2021-01-19 17:30:00", "2021-01-19 04:00:00", NA, "2021-01-22 12:50:00",
      "2021-01-29 05:00:00", "2021-01-30 05:00:00", "2021-02-04 05:00:00",
      "2021-02-05 09:00:00", "2021-02-05 22:10:00", "2021-02-08 07:02:00",
      "2021-02-12 08:00:00", "2021-02-12 09:05:00", "2021-02-18 04:00:00",
      "2100-01-01 00:00:00", NA, "2021-02-26 06:00:00"
    ),
    tz = "UTC"
  ),
  true_metaraminol_off = as.POSIXct(
    c(
      NA_character_, NA_character_, NA_character_, NA_character_,
      NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
      NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
      NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
      NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
      NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
      NA_character_
    ),
    tz = "UTC"
  ),
  verification_true_met_off = as.POSIXct(
    c(
      NA_character_, NA_character_, NA_character_, NA_character_,
      NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
      NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
      NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
      NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
      NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
      NA_character_
    ),
    tz = "UTC"
  ),
  true_phenylephrine_off = as.POSIXct(
    c(
      NA_character_, NA_character_, NA_character_, NA_character_,
      NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
      NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
      NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
      NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
      NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
      NA_character_
    ),
    tz = "UTC"
  ),
  verification_true_phen_off = as.POSIXct(
    c(
      NA_character_, NA_character_, NA_character_, NA_character_,
      NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
      NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
      NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
      NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
      NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
      NA_character_
    ),
    tz = "UTC"
  ),
  true_vasopressin_off = as.POSIXct(
    c(
      "2020-09-21 07:00:00", NA, NA, "2020-10-14 00:00:00", NA, NA,
      NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
      NA, NA, NA, NA, NA, "2021-02-19 15:00:00", NA, NA
    ),
    tz = "UTC"
  ),
  verification_true_vaso_off = as.POSIXct(
    c(
      "2100-01-01 00:00:00", NA, NA, "2020-10-14 00:00:00", NA, NA,
      NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
      NA, NA, NA, NA, NA, "2021-02-19 15:00:00", NA, NA
    ),
    tz = "UTC"
  ))

a <- c(Adrenaline.start.time.variation = "true_adrenaline_on",
       Noradrenaline.start.time.variation = "true_noradrenaline_on",
       Metaraminol.start.time.variation = "true_metaraminol_on",
       Phenylephrine.start.time.variation = "true_phenylephrine_on",
       Vasopressin.start.time.variation = "true_vasopressin_on",
       Adrenaline.stop.time.variation = "true_adrenaline_off",
       Noradrenaline.stop.time.variation = "true_noradrenaline_off",
       Metaraminol.stop.time.variation = "true_metaraminol_off",
       Phenylephrine.stop.time.variation = "true_phenylephrine_off",
       Vasopressin.stop.time.variation = "true_vasopressin_off")                             

subset(dfa, name %in% c("Adrenaline.start.time.variation",
                        "Noradrenaline.start.time.variation",
                        "Metaraminol.start.time.variation",
                        "Phenylephrine.start.time.variation",
                        "Vasopressin.start.time.variation",
                        "Adrenaline.stop.time.variation",
                        "Noradrenaline.stop.time.variation",
                        "Metaraminol.stop.time.variation",
                        "Phenylephrine.stop.time.variation",
                        "Vasopressin.stop.time.variation")) %>%
  apply(MARGIN=1, \(x) {
    mt <- match(a[match(x[2], names(a))], names(df23))
    cbind(t(x[1:2]), df23[df23$study_id == x[1], c(mt, mt + 1)]) %>%
      setNames(c('study_id', 'Conflict', 'initial', 'verification'))
  }) %>% do.call(what=rbind) ```
r
© www.soinside.com 2019 - 2024. All rights reserved.