私は解釈していますが、あなたの異なっ今の表記 "(9,9,9,9,9)が10^5 ="。列挙されたすべての組み合わせ(すなわち、10^5)の部分に、各五重奏が何回出現するかを数えますか?
キューブを2dデータフレームのリストに変換します。そしてあなたがどこかにそれらを必要とするなら、いくつかの次元指数。
library(magrittr)
lst_ds <- purrr::map(seq_len(characteristics), ~tibble::as_tibble(world[,,.]))
lst_ds <- purrr::map(lst_ds, function(d) { dplyr::mutate(d, dim1= seq_len(nrow(d))) })
エンティティ属性値スタイルのデータセット(つまり、スーパートール)に変換します。
ds_eav <- lst_ds %>%
dplyr::bind_rows(.id = "characteristic") %>%
tidyr::gather(key=dim2, value=value, -characteristic, -dim1) %>%
dplyr::mutate(
characteristic = paste0("c", characteristic),
dim2 = as.integer(sub("^V(\\d+)$", "\\1", dim2))
)
各観察クインテットが独自の行を占有するように広げ。
ds_quintet <- ds_eav %>%
tidyr::spread(key=characteristic, value=value)
可能なクインテットを列挙します。
ds_possible <- tidyr::crossing(
c1 = 0:9,
c2 = 0:9,
c3 = 0:9,
c4 = 0:9,
c5 = 0:9
)
観測されたクインテットをカウントしてから、すべての10^5の値で右に結合します。 NA
(これは決してds_obs
で発生したものはゼロで置き換えてください)。以下のように見える
ds_obs <- ds_quintet %>%
dplyr::select(-dim1, -dim2) %>%
dplyr::group_by(c1, c2, c3, c4, c5) %>%
dplyr::summarize(
frequency = n()
) %>%
dplyr::ungroup() %>%
dplyr::right_join(ds_possible, by=c("c1", "c2", "c3", "c4", "c5")) %>%
dplyr::mutate(
frequency = dplyr::coalesce(frequency, 0L)
) %>%
dplyr::arrange(c1, c2, c3, c4, c5)
:のような配列をハッシュ
A tibble: 100,000 x 6
c1 c2 c3 c4 c5 frequency
<dbl> <dbl> <dbl> <dbl> <dbl> <int>
1 0 0 0 0 0 0
2 0 0 0 0 1 0
3 0 0 0 0 2 2
4 0 0 0 0 3 0
5 0 0 0 0 4 0
6 0 0 0 0 5 0
7 0 0 0 0 6 1
8 0 0 0 0 7 0
9 0 0 0 0 8 0
10 0 0 0 0 9 0
# ... with 99,990 more rows
'ダイジェスト::ダイジェスト(世界を、[1、1、])'あなたにそれぞれの可能なシーケンスのためのユニークな値を取得します。私はあなたのためにIDを使用することを目指しているか分からない。 – Marius