【问题标题】:dummy coding for certain variable [duplicate]某些变量的虚拟编码[重复]
【发布时间】:2023-03-15 15:57:01
【问题描述】:

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

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,这是我手动检查的,不能为真。

【问题讨论】:

  • 能否格式化您的数据
  • “错误结果”是什么?您可以为您在此处向我们展示的数据样本添加所需的结果吗?
  • @RAB 新创建的变量只填充了0,但我手动检查发现确实有一些变量归类为过期
  • i 您提供给我们的数据,没有一天超过截止日期,所以它们都为 0。如果有特定的实例不起作用,那么您需要将它们包含在你的问题!帮帮我们,伙计
  • @RAB 我编造了数据,在我的真实 df 中我有这些案例。我想我对完成变量做错了什么,或者它对你来说是否正确。我会尽快编辑。

标签: r dummy-variable


【解决方案1】:

它对我有用:

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

你有没有拼错 cllw$ 而不是 df$ ?

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

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 中发生了很多次:当您检查完成 == 1 时,测试可能由于舍入问题而失败,例如,如果您将完成定义为 LONG 或 FLOAT .你可以试试:

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

希望对你有帮助

【讨论】:

  • 这是问题中的一个错误,对此感到抱歉。我的问题是我的输出变量只包含 0,即使我看到有一些条件被归类为过期,在示例数据中,它是第一个条件,日期大于截止日期
猜你喜欢
  • 2023-03-14
  • 2018-07-15
  • 2021-12-08
  • 2013-05-02
  • 2012-12-19
  • 1970-01-01
  • 2016-03-19
  • 2015-08-02
  • 1970-01-01
相关资源
最近更新 更多