小编JFG*_*123的帖子

data.table 中 mutate_at (dplyr) 的等价物是什么?

我正在尝试将 dplyr 中的一些较慢的进程移动到使用 data.table,但是似乎无法找到一种在 data.table 中使用“mutate_at”类型方法的有效方法。特别是,在命名创建的新变量并将超过 1 个函数应用于多个列时。

下面我使用 mutate_at 将 2 个不同的函数应用到 2 个具有关联命名的不同列 + 使用 group by 语句。我希望能够在 data.table 中轻松复制它。

library(tibble)
library(zoo)

Data = tibble(A = rep(c(1,2),50),
              B = 1:100,
              C = 101:200)

Data %>% 
    group_by(A) %>% 
    mutate_at(vars(B,C), funs(Roll.Mean.Week = 7 * rollapply(., width = 7, mean, align = "right", fill = 0, na.rm = T, partial = T),
                              Roll.Mean.Two.Week = 7 * rollapply(., width = 14, mean, align = "right", fill = 0, na.rm = T, partial …
Run Code Online (Sandbox Code Playgroud)

r dplyr data.table mutate

5
推荐指数
1
解决办法
825
查看次数

将多个 .rda 文件加载到 r 中的列表中

我运行了各种模型(glm、rpart、earth 等)并将模型对象从每个模型对象导出到我计算机上的一个文件夹中。所以我现在有一个文件夹,其中包含大约 60 个不同的模型,这些模型存储为单独的 .rda 文件。

这是通过创建一个模型函数然后通过 purrr 映射包将其应用于模型类型列表来完成的(以避免错误和终止)。

我现在想将它们加载回 r 并进行比较。不幸的是,当我编写初始模型脚本时,每个模型都存储为相同的即“Model.Object”(我不知道否则该怎么做),因此当我尝试将每个模型单独加载到 r 时,它只是相互覆盖。每个文件都保存为 glm.rda、rpart.rda、earth.rda 等,但其中的模型被标记为 Model.Object(为了澄清)。

所以我想我有几个问题;1. 可以将多个 .rda 文件加载到 r 到一个列表中,然后可以将其编入索引 2. 如何更改已应用的模型函数,以便“model.object”名称读取为模型类型(例如glm、rpart 等)

代码:

    Model.Function = function(Model.Type){

  set.seed(0)
  Model.Output = train(x = Pred.Vars.RVC.Data, y = RVC, trControl = Tcontrolparam,
                       preProcess = Preprocessing.Options, tuneLength = 1, metric = "RMSE",
                       method = Model.Type)

    save(Model.Object, file = paste("./RVC Models/",Model.Type,".rda", sep = ""))

  return(Model.Object)

}

Possibly.Model.Function = possibly(Model.Function, otherwise = "something wrong here")

result.possible = map(c("glm","rpart","earth"), Possibly.Model.Function)
Run Code Online (Sandbox Code Playgroud)

r save rda purrr

4
推荐指数
1
解决办法
2128
查看次数

检查一个数据帧中的日期是否在另一个数据帧的日期范围内,并在 true 时返回行

if (!require("pacman")) install.packages("pacman")
pacman::p_load(tidyverse, lubridate)

# Example of sample dates - these are to be used to cross check if date exists within the range
Sample.Dates = tibble(
  ID = "ID",
  Round = 1:3,
  Start.Date = dmy(c("03/12/2018","10/12/2018","17/12/2018")),
  End.Date = dmy(c("09/12/2018","16/12/2018","23/12/2018")))

# Reference dates for a particular player - "John". Need to cross check the date against Sample.Dates and attach round, start and end date columns
Ref.Dates = tibble(
  ID= "ID",
  Date = seq.Date(ymd("2018-12-05"), ymd("2018-12-31") ,  by = "day"),
  Player = …
Run Code Online (Sandbox Code Playgroud)

r date between data.table tidyverse

2
推荐指数
1
解决办法
1031
查看次数

标签 统计

r ×3

data.table ×2

between ×1

date ×1

dplyr ×1

mutate ×1

purrr ×1

rda ×1

save ×1

tidyverse ×1