【问题标题】:R data.table keys and column names. HarmonisationR data.table 键和列名。协调
【发布时间】:2020-05-31 16:56:16
【问题描述】:

我正在尝试为 data.table 设置键并将原始列名保留在第二行。到目前为止,我所做的所有尝试都将列名更改为键并删除了原始变量。我有十个 data.tables 要合并,所有变量都有不同的名称,如示例中所示。因此,我制作了键,但想在进行协调之前也保留原件。

library(tidyverse)
library(lubridate)
library(forcats)
library(stringr)
library(data.table)
library(rio)
library(dplyr)

1。键

keys1 <- c("SDC_GENDER","SDC_CHILD_NB","LAB_CRP","PM_HIP")
keys2 <- c("SDC_GENDER","SDC_CHILD_NB","LAB_CRP","PM_HIP")

2。带有变量名称的 data.table 示例。

TD3 = data.table(q128 = c(1, 2, 1, 2), q129 = c(1, 5, 2, 4), q130 = c(0.8, 3.0, 10.0, NA), q131 = c(55, 56, 80, 79))
TD3
TD4 = data.table(q128 = c(1, 1, 1, 2), q129 = c(1, 3, 2, 999), q130 = c(0.9, 3.1, NA, 9.0), q131 = c(58, 60, 45, NA))
TD4

【问题讨论】:

  • 是否所有的 data.frames 都具有完全相同的结构,即列数?
  • 将列名保留在第二行对我来说毫无意义。不能像这里一样在一行上使用character,在另一行上使用numeric。您所说的与大多数语言中数据框的定义不兼容。在重命名之前,您可以将旧名称保存在其他地方(不是在每个框架中)。
  • 是的,此阶段的列数相同。我为每个 data.table 中的每一列的每个变量名创建了键。
  • 原来的列名就是q128、q129、q130等。但在每个 R data.table 中都不同。我尝试使用 SDC_GENDER 等键来协调表。但此时希望将键和原始变量名都保留在 data.tables 中。现在,我有相同的表,其中包含原始变量列名和键。
  • 现在我注意到,虽然很累,但为两个 data.tables 创建了相同的变量名 (q128...)。应该是不同的,所以他们不马赫。我再举一个例子。

标签: r merge data.table key tidyverse


【解决方案1】:

我不确定这是否真的是您想要的数据结构,即像 r2evans 所说的那样具有混合变量类型。但是......这个解决方案有效。只需将您所有的小 data.tables 放入一个列表中,瞧。

我注意到 keys1 和 keys2 是相同的,所以我只使用了其中一个。如果它们应该是不同的键,它们也可以被列出。

keys1 <- c("SDC_GENDER","SDC_CHILD_NB","LAB_CRP","PM_HIP")
TD <- list()
TD[[1]] = data.table(q128 = c(1, 2, 1, 2), q129 = c(1, 5, 2, 4), q130 = c(0.8, 3.0, 10.0, NA), q131 = c(55, 56, 80, 79))
TD[[2]] = data.table(q128 = c(1, 1, 1, 2), q129 = c(1, 3, 2, 999), q130 = c(0.9, 3.1, NA, 9.0), q131 = c(58, 60, 45, NA))
TD <- lapply(TD, FUN = function(x){
  oldcolumns <- colnames(x)

    td <- data.table(
    'V1' = oldcolumns[1],
    'V2' = oldcolumns[2],
    'V3' = oldcolumns[3],
    'V4' = oldcolumns[4]
  )
    colnames(td) <- keys1
  colnames(x) <- keys1

  x <- rbind(td, x)
  return(x)

})

【讨论】:

  • 谢谢!我会试试这个!如果您可以在同一个表中看到原始标签和键,那么此时表的协调更加清晰。
猜你喜欢
  • 2020-07-08
  • 1970-01-01
  • 1970-01-01
  • 2013-10-21
  • 2017-10-24
  • 2016-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多