r - 作为二进制变量处理

谁能帮我解决这个错误?

Error: The treatment must be a binary variable.

尽管在运行了 matchit 函数相互需要的 mutate 函数之后,尝试继续运行以下代码行,但无法找出问题出在哪里以及为什么会发生这种情况。

    library(Matching)
    library(MatchIt)
    library(cobalt)
    library(WeightIt)
    library(twang)
    library(tidyverse)
    library(Hmisc)
    library(emmeans)
    library(rms)
    library(rpart) 
    library(randomForest)
    library(survey)
    library(glue)
    library(nnet)    
    
    set.seed(1)
        matching_lg_1 <- map(
          .x = ratios, ~ matchit(
            procedure ~ age + sub_id + intermacs_iv + gender + bsa + redo +
              ef + days_cvvh_preop, data = cardio_db_matched %>% 
            mutate(procedure = if_else(procedure =='proc_1', 1, 0), .data = cardio_db_matched), 
            distance = "logit", method = "nearest", ratio = .x, caliper = 0.2,
            m.order = "random", replace = FALSE
          )
        ) %>%
          set_names(x = ., nm = c("ratio_1:1", "ratio_1:2"))

原始数据集中的变量可能采用以下值: proc_1 proc_2

感谢关注。

最佳答案

我有同样的问题,这告诉你 treatment(procedure)不包含 0 到 1 之间的值。很可能你有缺失值,在在这种情况下,设置 na.omit() 或检查任何可能导致变量的值不只是 0 和 1 的变量转换。

https://stackoverflow.com/questions/65233284/

相关文章:

android - 在 Kotlin 中检查两个对象的某些(不是全部)属性是否相等的惯用方法

postgresql - 忽略 JetBrains 中的 extra_float_digits 参数

ios - 使用 NSPersistentCloudKitContainer 处理重复项

javascript - 如何通过输入字段更改 slider ?

git - 如何在 "git checkout"的输出中着色分支名称?

vim - 按箭头键时,取消 vim 终端模式

python - 子进程无法使用 Pandas 执行文件

ruby-on-rails - 将复杂的哈希传递给 Sidekiq 作业

apache-kafka - 如何删除一个特定主题的组的消费者偏移量

c# - 使用 Lamar 注入(inject)运行时对象