Использование R для создания таблицы данных - PullRequest
0 голосов
/ 30 августа 2018

У меня есть кое-что, что я хотел бы сделать в R, но я даже не знаю, с чего начать. Я хочу создать таблицу данных, скажем, 8 столбцов в ширину.

Я хочу установить условия для каждого столбца, т.е.

Максимальное значение столбца 10, 70, 100, 100, 100, 100, 100, 100

Минимальное значение столбца 0, 0, 0, 0, 0, 0, 0, 20

Сумма строки = 100

Шаги, скажем 5.

Идея состоит в том, что каждый столбец опускается до тех пор, пока строка не станет равной 100, а затем перейдет к следующей строке.

Ожидаемый результат примерно такой:

10, 70, 20, 0, 0, 0, 0, 0
10, 70, 15, 5, 0, 0, 0, 0
10, 70, 15, 0, 5, 0, 0, 0  
10, 70, 15, 0, 0, 5, 0, 0 
10, 70, 15, 0, 0, 0, 5, 0 
10, 70, 15, 0, 0, 0, 0, 5 
10, 70, 10, 10, 0, 0, 0, 0
 10, 70, 10, 0, 10, 0, 0, 0
......

Как только он последует этой схеме, скажем, 50 000 строк, он завершит вычисление.

Как бы я поступил так?

С уважением,

Sam

1 Ответ

0 голосов
/ 30 августа 2018

Интересная проблема. Вот мое взятие, основанное на случайной выборке из разделов распределения chi ^ 2 (2 df).

Большая проблема здесь в том, что сумма каждой строки не строго равна 100.

library(dplyr)
library(data.table)

dat <- lapply(1:100, function(x) { # controls number of rows
  dat <- c(runif(1, 0, 0.01), runif(1, 0.3, 2), runif(8, 6, 20)) %>% # tune these, controls where in the distribution the values are coming from
    sort() %>%
    dchisq(df = 3) # samples from sections of a chi square distribution with 2 df
  dat <- plyr::round_any(300*dat, 5, f = round) # rounds to steps of 5 - the '300' scales the responses.
  dat
}) %>%
  as.data.table() %>%
  t()

apply(dat, 1, sum) %>%
  hist()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...