代码之家  ›  专栏  ›  技术社区  ›  user1412

r data.table.sd与多个列集一起使用以获取rmspe

  •  1
  • user1412  · 技术社区  · 6 年前

    我有一个数据集,我已经做了一些预测。我现在想计算 RMSPE 为此,我使用 多指标 根据我的理解,通过输入预测值和实际值,我将得到 RMSPE . 我有多困惑我怎么能在里面用这个 数据表 传递两组列。

    我的示例数据集如下所示-

    library(data.table)
    library(MLmetrics)
    
    set.seed(123)
    id <- seq(1001,1100,1)
    city <- sample(1:4,100,replace = T)
    a1 <- sample(1:100,100,replace = T)
    a2 <- sample(1:100,100,replace = T)
    a3 <- sample(1:100,100,replace = T)
    a4 <- sample(1:100,100,replace = T)
    a5 <- sample(1:100,100,replace = T)
    p1 <- sample(1:100,100,replace = T)
    p2 <- sample(1:100,100,replace = T)
    p3 <- sample(1:100,100,replace = T)
    p4 <- sample(1:100,100,replace = T)
    p5 <- sample(1:100,100,replace = T)
    
    df1 <- as.data.table(data.frame(id,city,a1,a2,a3,a4,a5,p1,p2,p3,p4,p5))
    
    RMSPE <- df1[, lapply(.SD, function(x,y) RMSPE(x,y),
                           by = city, .SDcols = **xxxx**)] 
    

    所以在这种情况下,a1,a2,a3,a4,a5是我的实际值,p1,p2,p3,p4,p5是我的预测值。我想把p1,p2,p3,p4,p5作为x传递,把a1,a2,a3,a4,a5作为y传递。我期望得到的结果是一种汇总表,有4行(每个城市一行)和6列,第一列是城市,第2-6列对于 RMSPE 对于每个变量。

    我怎样才能在data.table中得到这个。我该换什么 XXXX 用什么?

    谢谢您!!

    1 回复  |  直到 6 年前
        1
  •  2
  •   fidelin    6 年前

    我不确定这是不是你要找的

    colsToKeep <- c("a1", "a2", "a3", "a4", "a5")
    colsToW <- c("p1", "p2", "p3", "p4", "p5")
    
    
    df1[, Map(function(x,y, w) get(x)(y, w), 
              setNames(rep('RMSPE',length(colsToKeep)), paste("RMSPE", colsToKeep, colsToW, sep = "_")),
              .SD[, ..colsToKeep], .SD[, ..colsToW]),
        by = city]