如何在 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()
代码,您可以将其粘贴到您正在分发的文件中。
- 使用
reprex
包 https://reprex.tidyverse.org/
我有一个数据 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()
代码,您可以将其粘贴到您正在分发的文件中。 - 使用
reprex
包 https://reprex.tidyverse.org/