【问题标题】:Creating a Categorical Y variable Using Dates使用日期创建分类 Y 变量
【发布时间】:2019-12-03 23:28:44
【问题描述】:

我正在为一项为工人提供工资补贴的福利计划使用管理数据集。我正在尝试创建一个 Y 变量,其中 1 表示不再获得补贴的人,0 表示当前正在接受补贴的人,其中 end_date=NA。我将使用两个变量来执行此操作:1-start_date 和 2-end_date。

我尝试了以下代码,但收到一条错误消息:

train_worker_subsidy5_categorical_y = train_worker_subsidy5 %>% 
  mutate(left_welfare = numeric(is.na(end_date)))
test_worker_subsidy5_categorical_y = test_worker_subsidy5 %>%
  mutate(left_welfare = numeric(is.na(end_date)))

错误信息是:

数字错误(is.na(end_date)):无效的“长度”参数

【问题讨论】:

  • 查看?numeric 的帮助文件。您可能正在寻找as.numeric 而不是numeric;后者并没有达到您的预期。

标签: r dplyr


【解决方案1】:

如果我理解您的问题,我会使用这种方法。

df <- data.frame('start_date' = as.Date(c('2018-01-01','2019-02-01',
                                          '2019-03-01','2019-04-01')),
                  'end_date' = as.Date(c('2019-01-01',NA,'2019-08-01',
                                   '2020-01-01')))

 today <- Sys.Date()

df %>% mutate('receiving' = if_else(is.na(df$end_date),0,
                              if_else(df$end_date > today,0,1)))

       start_date   end_date      receiving
      1 2018-01-01   2019-01-01         1
      2 2019-02-01        <NA>          0
      3 2019-03-01   2019-08-01         1
      4 2019-04-01   2020-01-01         0

如果没有任何可重现的代码,很难完全理解这个问题。希望这会有所帮助。

【讨论】:

  • 谢谢,我会用这些新信息调整我的代码。
  • 嘿 Maa425,我已经更新了我的示例。我会使用 If_else 语句首先检查日期是否存在,然后检查日期是否早于今天的日期。希望这会有所帮助
猜你喜欢
  • 2020-05-30
  • 1970-01-01
  • 2012-03-19
  • 1970-01-01
  • 2021-05-18
  • 2023-04-02
  • 2014-10-04
  • 1970-01-01
  • 2022-12-21
相关资源
最近更新 更多