如何在 R 中的代码中创建数据 table

How do I create a data table in code in R

我有一个数据 table 作为 CSV 文件,我用它来为仪表板创建指标。数据 table 包括指标 ID 并将它们与字段名称相关联。 table——这个指标的定义——在很大程度上是静态的,我想将它包含在 R 代码中,而不是导入包含这些标题的 CSV 文件。

table 看起来像这样:

Metric_ID Metric_Name Numerator Denominator
AB0001 Number_of_Customers No_of_Customers
AB0002 Percent_New_Customers No_of_New_Customers No_of_Customers

这有大约 40 行数据,我想在代码中设置这个 table,以便在 R 查询 运行 时创建它。然后,我将使用它将指标 ID 与我通过 SQL 查询检索到的度量相关联。有时 table 可能会发生变化——例如,可能会添加新指标或修改现有指标。这将需要在代码中进行一些修改以合并这些指标。

我能找到的最接近的方式是按照下面查询中描述的方式创建数据 table。

dt<-data.table(x=c(1,2,3),y=c(2,3,4),z=c(3,4,5))
dt

   x y z
1: 1 2 3
2: 2 3 4
3: 3 4 5

这适用于具有几行或几列的 table,但对于具有 40 多行的 table 将很笨拙。例如,如果我想向下修改 20 行的指标,我必须在每列中向下修改 20 行,然后测试 table 以确保我在每列中的正确位置切换指标 - - 特别是在某些指标有空单元格的情况下。例如,我可能更正了第 20 行中的指标 ID,但不小心将定义(一个单独的列)放在了第 19 行中。

有没有更直接的方法,本质上在代码中创建 table?

(我很欣赏 直接的方法是保持 CSV 文件可访问并使用 read_csv 将其导入 R。但是,这不起作用那么好吧,如果同事在他们的机器上 运行ning 这个查询并且有一个不同的 CSV 文件路径——这也会增加他们 运行ning 使用 out-of-date 指标的查询的风险table,因为他们的文件中可能没有最新版本)。

提前感谢您提供的任何指导!

托尼

这里有两个选项(示例来自各自的帮助页面):

data.table::fread()

fread("A,B
1,2
3,4
")
#>        A     B
#>    <int> <int>
#> 1:     1     2
#> 2:     3     4

https://rdatatable.gitlab.io/data.table/reference/fread.html

tibble::tribble()

tribble(
  ~colA, ~colB,
  "a",   1,
  "b",   2,
  "c",   3
)
#> # A tibble: 3 × 2
#>   colA   colB
#>   <chr> <dbl>
#> 1 a         1
#> 2 b         2
#> 3 c         3

https://tibble.tidyverse.org/reference/tribble.html

其他选项:

  • 如果您已经从某处获得了 data.frame,您还可以使用 dput() 获得一个 structure() 代码,您可以将其粘贴到您正在分发的文件中。
  • 使用 reprexhttps://reprex.tidyverse.org/