特定变量的虚拟编码

dummy coding for certain variable

我有一个看起来像这样的数据框

df <- data.frame(task       = c(1, 2,  3, 4, 5, NA),
                 day        = c(10, 6,  7, 9, 9, 10),
                 deadline   = c(7, 12, 9, 7, 9, NA),
                 completion = c(1, 1,  1, 1, 0, NA))

现在我想创建一个虚拟变量来显示任务在完成当天是否逾期,因此我创建了这段代码,但不知何故它没有给我正确的结果。

df$overduetask <- ifelse(df$completion == 1 & df$day > df$deadline, 1,0)

所以我的想法是,如果任务已完成 (completion = 1) 并且日期大于截止日期,则任务逾期。 我为过期变量获得的输出仅为 0,这是我手动检查的,但不可能是真的。

对我有用:

df$overduetask <- ifelse(df$completion == 1 & df$day >df$deadline, 1,0)

你是不是把 df$ 拼错了 cllw$ 了?

嗨,我说过吗,它对我有用:

eduardo> str(df)
'data.frame':   6 obs. of  5 variables:
 $ task       : num  1 2 3 4 5 NA
 $ day        : num  10 6 7 9 9 10
 $ deadline   : num  7 12 9 7 9 NA
 $ completion : num  1 1 1 1 0 NA
 $ overduetask: num  1 0 0 1 0 NA

我怀疑你的问题是什么......我在 R 中发生过很多次:当你检查 completion == 1 时,测试可能因为舍入问题而失败,例如,如果你将 completion 定义为 LONG或浮动。你可以试试:

df$overduetask <- ifelse(as.integer(df$completion) == 1 & df$day > df$deadline, 1,0)

希望对你有帮助