Частота отсчетов всех возможностей в R - PullRequest
0 голосов
/ 09 декабря 2018

Я хочу проанализировать количество частот набора данных.У меня есть 6 шаров, пронумерованных от 1 до 6. 3 шара вытягиваются из коробки без замены и отмечаются номера.3 шарика возвращаются в коробку, и процесс повторяется 5 раз.Я хочу проанализировать подсчет частоты одного числа, двух чисел и трех чисел.Одно число 1- 2- 3- 4- 5- 6- Два числа (1,2) (1,3) 6C2 = 15 комбинаций Три числа (1,2,3) (1,2,4) 6C3 = 20 комбинаций

Есть мой набор данных.

df = as.data.frame(rbind(c(1,3,5), c(3,4,5), c(2,4,6), c(1,3,6), c(2,4,5)))
colnames(df) = c("num1","num2","num3")

  num1 num2 num3
1    1    3    5
2    3    4    5
3    2    4    6
4    1    3    6
5    2    4    5

Я новичок в R. Любая помощь будет принята с благодарностью.Спасибо, Бабаджи ДКР

1 Ответ

0 голосов
/ 10 декабря 2018

Вот очень не элегантное решение, но оно выполняет свою работу:

library(tidyverse)

#One number

one_numb <- combn(names(df), 1, simplify = FALSE)

result <- list()

for(i in 1:length(one_numb)) {
 result[[i]] <- df %>%
  mutate(comb = paste0(!!as.symbol(one_numb[[i]][1]))) %>%
  select(comb)
}

bind_rows(result) %>%
 group_by(comb) %>%
 tally()

  comb      n
  <chr> <int>
1 1         2
2 2         2
3 3         3
4 4         3
5 5         3
6 6         2

#Two numbers

two_numb <- combn(names(df), 2, simplify = FALSE)

result <- list()

for(i in 1:length(two_numb)) {
 result[[i]] <- df %>%
 mutate(comb = paste0(!!as.symbol(two_numb[[i]][1]), !!as.symbol(two_numb[[i]][2]))) %>%
 select(comb)
}

bind_rows(result) %>%
 group_by(comb) %>%
 tally()

   comb      n
   <chr> <int>
 1 13        2
 2 15        1
 3 16        1
 4 24        2
 5 25        1
 6 26        1
 7 34        1
 8 35        2
 9 36        1
10 45        2
11 46        1

#Three numbers

three_numb <- combn(names(df), 3, simplify = FALSE)

result <- list()

for(i in 1:length(three_numb)) {
 result[[i]] <- df %>%
  mutate(comb = paste0(!!as.symbol(three_numb[[i]][1]), !!as.symbol(three_numb[[i]][2]), 
                       !!as.symbol(three_numb[[i]][3]))) %>%
  select(comb)
}

bind_rows(result) %>%
 group_by(comb) %>%
 tally()

  comb      n
  <chr> <int>
1 135       1
2 136       1
3 245       1
4 246       1
5 345       1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...