Я делаю выборку всех значений одного столбца моего фрейма данных в зависимости от другого столбца. Для этого я использую tapply
.
ex <- data.frame(
loc = c("1", "1", "2", "2", "2", "3", "3"),
sp = c("a", "b", "b", "c", "d", "a", "d"))
ex
all_sp <- unique(ex[, "sp"])
all_sp <- data.frame(all_sp)
ex$sp_random <- ""
sp_rand <- tapply(ex$sp_random, ex$loc, function(x)
base::sample(all_sp$all_sp, size = length(x), replace = FALSE, prob = NULL))
Теперь я хотел бы поместить список sp_rand
в исходный фрейм данных ex
, но я не знаю, как это сделать правильно.
Единственный способ, который я нашел, - изменить порядок столбца ex
следующим образом:
ex <- ex[order(ex$loc), ]
ex$sp_random <- as.character(unlist(sp_rand))
ex
но order
довольно медленный с кадрами больших данных.
sp_rand
в моем исходном фрейме данныхex
. Ноtapply
дал мне список, и я не могу найти эффективный способ поместить его обратно в исходный фрейм данных. - person P. Denelle   schedule 16.12.2015