我有一个填充因子列的数据框,我想添加一个随机因子值行。我该怎么做?
> 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")
。
(它也不总是相同的数据框,我想要一个通用函数。约束是所有列都将始终是因子值。)
答案 0 :(得分:2)
如果您想通过随机因子值表示要在数据集中生成新行,则对于每个单独因子(即列),从该因子(列)中的可用级别中绘制随机值。由于缺乏可重复的示例,我只能为您提供一些未经测试的R代码。它首先从因子变量中提取所有可能的级别,然后从这些级别中随机绘制以创建新的随机行。我使用apply style循环。
available_levels = lapply(df2, levels)
new_row = sapply(available_levels, sample, size = 1)