Добавление случайной факторной строки во фрейм данных - PullRequest
0 голосов
/ 03 января 2012

У меня есть фрейм данных, заполненный факторными столбцами, и я хочу добавить случайную факторно-значную строку.Как мне это сделать?

> df = as.data.frame(list(a="YES", b="other", c="do_not_know"))
> levels(df$c) <- c("do_not_know", "yes", "no")
> df2 <- subset(df, subset=(a=="NO"))
> df2
[1] a b c
<0 rows> (or 0-length row.names)
> str(df2)
'data.frame':   0 obs. of  6 variables:
$ a          : Factor w/ 1 level "YES": 
$ b          : Factor w/ 1 level "other": 
$ c          : Factor w/ 3 levels "do_not_know",..: 

Теперь я бы хотел, чтобы random_row(df2) производил либо list("YES", "other", "do_not_know"), list("YES", "other", "yes"), list("YES", "other", "no") в случайном порядке.

(Это не всегдалибо один и тот же фрейм данных, я хочу универсальную функцию. Ограничение состоит в том, что все столбцы всегда будут иметь фактор-значение.)

1 Ответ

2 голосов
/ 04 января 2012

Если вы подразумеваете под случайным значением фактора, что вы хотите создать новую строку в наборе данных, которая для каждого отдельного фактора, т.е. столбца, извлекает случайное значение из доступных уровней в этом факторе (столбце).Из-за отсутствия воспроизводимого примера я могу предоставить вам только некоторый непроверенный R-код.Сначала он извлекает все возможные уровни из факторных переменных, а затем случайным образом рисует из этих уровней, чтобы создать новую случайную строку.Я использую применить стиль петли.

available_levels = lapply(df2, levels)
new_row = sapply(available_levels, sample, size = 1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...