【问题标题】:mutate_at (dplyr) alternative in data.table for converting dates [duplicate]data.table中用于转换日期的mutate_at(dplyr)替代方法[重复]
【发布时间】:2020-07-05 16:46:47
【问题描述】:

我有以下代码将所有以“DT”开头的列更改为Date格式,mutate_atdplyr

date_cols <- str_subset(names(df),'^DT')
df <- df %>%
  mutate_at(
    .vars= date_cols,
    .funs=list(~ as.Date(.,format = "%d%m%Y"))
  )

为了使用 data.table 做同样的事情,我编写了以下代码(有效)

date_cols <- str_subset(names(df),'^DT')
for (column in date_cols) {
  df[,(column) := as.Date(df[[..column]],format = "%d%m%Y")]
}

问题是data.table 中是否没有等效的mutate_at 可以避免显式的for 循环? (不是真正的问题,只是好奇)

【问题讨论】:

标签: r dplyr data.table


【解决方案1】:

基于由 count orlok 表示的What is the equivalent of mutate_at (dplyr) in data.table? 的更复杂的答案,我编写了以下代码,可以按我的意愿工作

date_cols <- str_subset(names(df),'^DT')
df[,(date_cols) := lapply(.SD, function(x) as.Date(x,format = "%d%m%Y")), 
   .SDcols = date_cols]

【讨论】:

    猜你喜欢
    • 2019-04-01
    • 2019-09-24
    • 1970-01-01
    • 2019-12-14
    • 1970-01-01
    • 1970-01-01
    • 2018-10-10
    • 1970-01-01
    相关资源
    最近更新 更多