用R编程语言创建OLAP多维数据集 [英] create OLAP cube in R programming language
本文介绍了用R编程语言创建OLAP多维数据集的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有以下数据
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多维数据集,其中功能SB国家/地区"列应位于行中,而+1 Function
,+1 SB
,+1 Country Region
列应位于列中.
i want to create 3 dimensional OLAP cube in which column Function SB Country Region should be in row and +1 Function
,+1 SB
, +1 Country Region
should be in column .
输出应采用以下格式
`+1 Function` `+1 SB` `+1 Country Region`
Function
SB
Country Region
谢谢
添加精确的RpivotTable输出.
Adding exact RpivotTable output.
推荐答案
例如,您可以使用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"))
的比较:
这篇关于用R编程语言创建OLAP多维数据集的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文