用 R 编程语言创建 OLAP 多维数据集
Posted
技术标签:
【中文标题】用 R 编程语言创建 OLAP 多维数据集【英文标题】:create OLAP cube in R programming language 【发布时间】:2017-08-17 10:21:40 【问题描述】:您好,我有以下数据
Function SB `Country Region` `+1 Function` `+1 SB` `+1 Country Region`
<chr> <chr> <chr> <chr> <chr> <chr>
1 ENG SB10 AMER ENG SB10 AMER
2 IT SB07 EMEA IT SB07 EMEA
3 QLT SB05 EMEA QLT SB05 EMEA
4 MFG SB07 EMEA MFG SB07 EMEA
5 MFG SB04 EMEA MFG SB05 EMEA
6 SCM SB08 EMEA SCM SB08 EMEA
我想创建 3 维 OLAP 多维数据集,其中列 Function SB Country Region 应位于行中,+1 Function
,+1 SB
,+1 Country Region
应位于列中。
输出应为以下格式
`+1 Function` `+1 SB` `+1 Country Region`
Function
SB
Country Region
谢谢你
添加精确的 RpivotTable 输出。
【问题讨论】:
你能直接显示所需的输出,而不仅仅是它的格式吗? 添加精确的 RpivotTable 输出。 i.stack.imgur.com/y1y1I.png 您能否确认您使用的代码是rpivotTable::rpivotTable(df, rows = c("Function", "SB", "Country Region"), cols = c("+1 Function", "+1 SB", "+1 Country Region"))
,如果是,请编辑您的问题以包含它?
【参考方案1】:
例如,您可以使用ftable()
:
df <- read.table(text =
" Function SB 'Country Region' '+1 Function' '+1 SB' '+1 Country Region'
ENG SB10 AMER ENG SB10 AMER
IT SB07 EMEA IT SB07 EMEA
QLT SB05 EMEA QLT SB05 EMEA
MFG SB07 EMEA MFG SB07 EMEA
MFG SB04 EMEA MFG SB05 EMEA
SCM SB08 EMEA SCM SB08 EMEA",
stringsAsFactors = FALSE, header = TRUE, check.names = FALSE)
foo <- ftable(df, row.vars = c(3, 1, 2), col.vars = c(6, 4, 5))
as.matrix(foo)[apply(foo, 1, function(x) any(x != 0)), apply(foo, 2, function(x) any(x != 0))]
# Or simply:
as.matrix(foo)[apply(foo, 1, any), apply(foo, 2, any)]
# +1 Country Region_+1 Function_+1 SB
# Country Region_Function_SB AMER_ENG_SB10 EMEA_IT_SB07 EMEA_MFG_SB05 EMEA_MFG_SB07 EMEA_QLT_SB05 EMEA_SCM_SB08
# AMER_ENG_SB10 1 0 0 0 0 0
# EMEA_IT_SB07 0 1 0 0 0 0
# EMEA_MFG_SB04 0 0 1 0 0 0
# EMEA_MFG_SB07 0 0 0 1 0 0
# EMEA_QLT_SB05 0 0 0 0 1 0
# EMEA_SCM_SB08 0 0 0 0 0 1
与rpivotTable::rpivotTable(df, rows = c("Country Region", "Function", "SB"), cols = c("+1 Country Region", "+1 Function", "+1 SB"))
比较:
【讨论】:
感谢 Aurèle 这适用于示例,但是当我将其应用于完整数据时,我错过了一些组合。我想要行和列的所有组合以及它们在数据中找不到匹配项的位置,它应该给我零(0)......你能帮我吗 那只是foo
你想要的吗?
确实如此。
没什么。 foo
应该已经在您的工作区中,如果您已经运行它的话。只需再次输入foo
,然后在命令行按Enter即可打印
感谢您的宝贵意见,我刚刚看到 foo 输出,它给了我频率,现在我想要矩阵,您能帮我吗以上是关于用 R 编程语言创建 OLAP 多维数据集的主要内容,如果未能解决你的问题,请参考以下文章
Kylin - 查询 Hbase 上的 OLAP 多维数据集?
Analysis Services 2005 OLAP 多维数据集:我可以在 nvarchar 列上创建不同的计数度量吗?