r - 具有不同类的多个 value.var 的 dcast data.table

标签 r data.table

我正在尝试将输入数据inDTdcast转换为预期输出outDT:

library(data.table)   

inDT <- data.table(
      int_value = c(2020L, 1L:10L, rep(NA_integer_, 20)),
      num_value = c(rep(NA_real_, 11), seq(0.1, 1, 0.1), rep(NA_real_, 10)),
  timestamp_value = c(rep(as.POSIXct(NA), 21), Sys.time() - 1:10),
  id = c(
    "int_id_1",
    rep("int_id_2", 10),
    rep("num_id", 10),
    rep("timestamp_id", 10)
  )
)

outDT <- data.table(
  int_id_1 = c(2020L, rep(NA_integer_, 9)),
  int_id_2 = 1L:10L,
  num_id = seq(0.1, 1, 0.1),
  timestamp_id = Sys.time() - 1:10
)

我使用dcast.data.table尝试了几个不同的星座:

dcast.data.table(inDT, int_value + num_value + timestamp_value ~ id, value.var = c("int_value", "num_value", "timestamp_value"))
dcast.data.table(inDT, . ~ id, value.var = c("int_value", "num_value", "timestamp_value"))

但我似乎在这里遗漏了一些东西。

非常感谢任何帮助。

最佳答案

不完美的方法:

inDT[, rn := rowid(id)]
Filter(function(z) !all(is.na(z)),
       dcast(inDT, rn ~ id, value.var = list("int_value", "num_value", "timestamp_value")))
#        rn int_value_int_id_1 int_value_int_id_2 num_value_num_id timestamp_value_timestamp_id
#     <int>              <int>              <int>            <num>                       <POSc>
#  1:     1               2020                  1              0.1          2021-09-23 09:15:41
#  2:     2                 NA                  2              0.2          2021-09-23 09:15:40
#  3:     3                 NA                  3              0.3          2021-09-23 09:15:39
#  4:     4                 NA                  4              0.4          2021-09-23 09:15:38
#  5:     5                 NA                  5              0.5          2021-09-23 09:15:37
#  6:     6                 NA                  6              0.6          2021-09-23 09:15:36
#  7:     7                 NA                  7              0.7          2021-09-23 09:15:35
#  8:     8                 NA                  8              0.8          2021-09-23 09:15:34
#  9:     9                 NA                  9              0.9          2021-09-23 09:15:33
# 10:    10                 NA                 10              1.0          2021-09-23 09:15:32

注意:我必须添加 rn,一列指示每个 id 内的行号,因为旋转操作需要将行关联在一起的前提。

关于r - 具有不同类的多个 value.var 的 dcast data.table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69300724/

相关文章:

r - dnorm 是如何工作的?

r - 从使用reactable创建的r Shiny 表将数据下载到excel中

r - 根据 R 中的 initial_split() 参数中指定的比例,分配用于分析的行数不等于预期数

r - 尝试计算相关矩阵时如何解释此错误的含义?

r - 分组是否在data.table 1.12.0中并行化?

R:积分:达到最大分割数,舍入误差

r - 如何确定两组变量是否在R中具有共享值?

r - 统计过去 n 天内值变化的次数

r - 如何创建具有不同列大小的data.table

r - 一个带有 data.table 的简单循环