R - случайный выбор столбцов для суммирования значений строк - PullRequest
1 голос
/ 04 апреля 2020

У меня есть набор данных с 20 столбцами и 1000 строк, сгенерированные с использованием:

sim_data <- do.call(cbind, replicate(20, rexp(1000, 1/120), simplify = FALSE))

Как выбрать случайное количество столбцов в строке, чтобы сложить их значения, и иметь столбец, показывающий, сколько столбцов были выбраны?

У меня есть:

picked <- sim_data[sample(nrow(sim_data), 5)]
sim_data$Sum <- sum(picked)
sim_data$Number <- length(picked)

но как выбрать случайный размер от 1 до 20 вместо "5" и повторить для всех строк?

1 Ответ

1 голос
/ 04 апреля 2020

Мы можем использовать apply

cbind(sim_data, t(apply(sim_data,1, function(x) {
       i1 <- sample(seq_along(x), 1)
       out <- sum(sample(x, i1))
       c(Length = i1, Sum = out)
     }
        )))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...