【问题标题】:Create column based on other Date column基于其他日期列创建列
【发布时间】:2021-12-27 20:18:57
【问题描述】:

您好,我的数据中有此列

df <- structure(list(validation_date = structure(c(18817, 18818, 18820, 
18820, 18821, 18842, 18843, 18843, 18843, 18843, 18843, 18890, 
18890, 18890, 18893, 18893, 18893, 18858, 18858, 18858, 18858, 
18858, 18859, 18831, 18831, 18831, 18831, 18831, 18834, 18830, 
18830, 18830, 18830, 18830, 18831, 18887, 18890, 18890, 18890, 
18890, 18890), class = "Date")), row.names = c(NA, -41L), class = c("tbl_df", 
"tbl", "data.frame"))

我将创建一个名为 classifiers 的新列,其中包含 3 个值,以列 validation_date 为条件,其中 2021-07-26 之前的日期名称为 classifier_1,2021-07-26 之后和 2021-08-19 之前的日期具有名称 classifier_2 和 2021 年 8 月 19 日之后的日期名称为 classifier_3。

谢谢

【问题讨论】:

  • 使用 dplyr 包:df %&gt;% mutate(classifiers = case_when(validation_date &lt; as.POSIXct("2021-07-26") ~ "classifier_1", validation_date &lt; as.POSIXct("2021-08-19") ~ "classifier_2", TRUE ~ "classifier_3"))

标签: r dataframe dplyr data.table


【解决方案1】:

请在下方找到使用data.table的解决方案

Reprex

  • 代码
library(data.table)
library(lubridate)


setDT(df)[, classifiers := fcase(validation_date < ymd("2021-07-26"), "classifier_1",
                                 validation_date >= ("2021-07-26") & validation_date < ymd("2021-08-19"), "classifier_2",
                                 validation_date >= ymd("2021-08-19"), "classifier_3")][]
  • 输出
#>     validation_date  classifiers
#>  1:      2021-07-09 classifier_1
#>  2:      2021-07-10 classifier_1
#>  3:      2021-07-12 classifier_1
#>  4:      2021-07-12 classifier_1
#>  5:      2021-07-13 classifier_1
#>  6:      2021-08-03 classifier_2
#>  7:      2021-08-04 classifier_2
#>  8:      2021-08-04 classifier_2
#>  9:      2021-08-04 classifier_2
#> 10:      2021-08-04 classifier_2
#> 11:      2021-08-04 classifier_2
#> 12:      2021-09-20 classifier_3
#> 13:      2021-09-20 classifier_3
#> 14:      2021-09-20 classifier_3
#> 15:      2021-09-23 classifier_3
#> 16:      2021-09-23 classifier_3
#> 17:      2021-09-23 classifier_3
#> 18:      2021-08-19 classifier_3
#> 19:      2021-08-19 classifier_3
#> 20:      2021-08-19 classifier_3
#> 21:      2021-08-19 classifier_3
#> 22:      2021-08-19 classifier_3
#> 23:      2021-08-20 classifier_3
#> 24:      2021-07-23 classifier_1
#> 25:      2021-07-23 classifier_1
#> 26:      2021-07-23 classifier_1
#> 27:      2021-07-23 classifier_1
#> 28:      2021-07-23 classifier_1
#> 29:      2021-07-26 classifier_2
#> 30:      2021-07-22 classifier_1
#> 31:      2021-07-22 classifier_1
#> 32:      2021-07-22 classifier_1
#> 33:      2021-07-22 classifier_1
#> 34:      2021-07-22 classifier_1
#> 35:      2021-07-23 classifier_1
#> 36:      2021-09-17 classifier_3
#> 37:      2021-09-20 classifier_3
#> 38:      2021-09-20 classifier_3
#> 39:      2021-09-20 classifier_3
#> 40:      2021-09-20 classifier_3
#> 41:      2021-09-20 classifier_3
#>     validation_date  classifiers

reprex package (v2.0.1) 于 2021 年 11 月 16 日创建

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-03
    相关资源
    最近更新 更多