代码之家  ›  专栏  ›  技术社区  ›  Chris Ruehlemann

从数据帧中抽取合格样本

r
  •  2
  • Chris Ruehlemann  · 技术社区  · 6 年前

    我想从数据帧中随机抽取行样本;然而,并不是所有的行都应该包含在绘图中,只是那些满足一个负条件的行:它们与第二个数据帧中的某个变量不匹配。 以下是一些模拟数据:

     df1 <- data.frame(
      x = c("A", "B", "L", "G", "C", "F", "S", "J", "G", "K", "X", "Y", "B", "C", "Z")
    )
    
    df2 <- data.frame(
      a = LETTERS[1:5],
      b = 1:5
    )
    

    我希望从中提取示例的数据帧是df1。绘图应排除df1$x中与数据表第一列中的数据点匹配的数据点 df2 df2$a . 到目前为止,我已经试过了:

    df1[sample(1:nrow(df2[-(match(df1$x, df2$a))]), 7, replace = F), ]
    

    df1[sample(1:nrow(df2[!match(df1$x, df2$a),]), 7, replace = F), ]
    

    1 回复  |  直到 6 年前
        1
  •  1
  •   Ronak Shah    6 年前

    df1$x 不存在于 df2$a 使用 which 然后把它拿走 sample 从这些指数中。

    df1[sample(which(!df1$x %in% df2$a), 7), ,drop = FALSE]
    
    #   x
    #7  S
    #15 Z
    #8  J
    #9  G
    #3  L
    #12 Y
    #6  F