【问题标题】:Alternative function for recode() that applies for "Date" class objects适用于“日期”类对象的 recode() 替代函数
【发布时间】:2021-09-24 16:12:32
【问题描述】:
 track        type    shortcut player  system_played date       time_period  time record_duration
   <chr>        <chr>   <chr>    <chr>   <chr>         <date>     <chr>       <dbl>           <dbl>
 1 Luigi Racew~ Three ~ No       Salam   NTSC          1997-02-15 2M 12.99S   133.                1
 2 Luigi Racew~ Three ~ No       Dan     PAL           2020-11-06 1M 57.77S   118.              112
 3 Moo Moo Farm Three ~ No       Gregg G NTSC          1997-03-07 1M 35.48S    95.5              81
 4 Moo Moo Farm Three ~ No       MR      PAL           2020-02-18 1M 25.93S    85.9             374
 5 Koopa Troop~ Three ~ No       Launsp~ NTSC          1997-05-27 1M 42.01S   102.               95
 6 Koopa Troop~ Three ~ No       Dan     PAL           2020-07-13 1M 35.29S    95.3               0

我有一个如上所述的数据集,现在我想用包含相同值但名称不同的新列“newdate”替换列“date”。对于每个“曲目”,最早的“日期”将变为“First”,最晚的日期将变为“Last”。
我试过这段代码:

mydata <- data %>%
  group_by(track) %>%
  mutate(newdate = recode(date, "First", .default = "Last"))

并遇到错误提示:

错误:mutate() 输入 newdate 有问题。 x 无适用方法 对于应用于“日期”类对象的“重新编码”,我输入newdaterecode(date, "First", .default = "Last")。 i 错误发生在 第 1 组:track = "Banshee Boardwalk"。

recode() 是否有可以申请“日期”类值的替代函数?

【问题讨论】:

    标签: r date group-by dplyr recode


    【解决方案1】:

    如果我们想将minmax日期更改为character元素,我们需要首先将dateDate类转换为character

    library(dplyr)
    mydata <- data %>%
           group_by(track) %>%
           mutate(newdate = case_when(date == min(date) ~ "First",
                           date == max(date) ~ "Last", TRUE ~ as.character(date)))
    

    【讨论】:

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