将随机因子值行添加到数据帧

时间:2012-01-03 19:43:31

标签: r

我有一个填充因子列的数据框,我想添加一个随机因子值行。我该怎么做?

> 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 个答案:

答案 0 :(得分:2)

如果您想通过随机因子值表示要在数据集中生成新行,则对于每个单独因子(即列),从该因子(列)中的可用级别中绘制随机值。由于缺乏可重复的示例,我只能为您提供一些未经测试的R代码。它首先从因子变量中提取所有可能的级别,然后从这些级别中随机绘制以创建新的随机行。我使用apply style循环。

available_levels = lapply(df2, levels)
new_row = sapply(available_levels, sample, size = 1)