【问题标题】:R conditional random samplesR 条件随机样本
【发布时间】:2016-11-26 13:54:41
【问题描述】:

如何根据条件值获取随机样本。例如我有以下数据框:

GROUP CLASS  AGE
A     1      10
A     2      15
B     1      10
B     2      17
C     1      12
C     2      14

我需要为每个 GROUPS 获取 30 条记录的样本,但只能从 CLASS = 1 中编译所有样本日期帧。

我知道如何获取 30 条记录的样本,但我不知道如何创建一个循环通过不同 GROUPS 并过滤 CLASS 的条件

ran.sample = sample(nrow(df_all), 30)
df = df_all[ran.sample, ]

有什么想法吗?

谢谢

【问题讨论】:

  • 您需要Class = 1 所在的每个组中的 1 个样本行吗?
  • 如果你使用data.table,那么可能有两个重复:samples by classsample without class
  • GROUP=A & CLASS =1 的 30 条记录 + GROUP=B & CLASS =1 的 30 条记录
  • 例如,我可以先过滤类,例如 df
  • @Selrac 当然可以。使用 .(GROUP, CLASS) 而不是 GROUP 应该可以,但是由于您的数据太小,我无法对其进行测试。另外,提及某人时请务必使用@,否则我不会收到通知。

标签: r dataframe random conditional


【解决方案1】:

试试这个:

newdf <- df[df$CLASS==1,]
do.call(rbind, lapply(split(newdf, newdf$GROUP), function(x) x[sample(nrow(x), 30),]))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-24
    • 1970-01-01
    相关资源
    最近更新 更多