考虑到R中一列内的代码,对相等数量的随机值进行采样

  • 本文关键字:随机 采样 代码 考虑到 一列 r
  • 更新时间 :
  • 英文 :


我正在使用R,我有一个数据集,看起来像这样。。。

group  col_2  col_3   col_4
A      p_m     12      21
A      q_x     11      21
A      i_z     13      22
A      q_z     11      24
A      p_x     14      25
A      i_m     15      26
A      q_m     17      28
A      p_x     16      29
A      i_z     12      23
A      q_m     14      23
A      q_x     13      25 
A      p_z     11      25
A      i_z     15      26
A      q_m     17      28
A      q_x     14      29
A      p_x     13      30
A      i_m     15      26
A      q_m     17      28
A      p_x     16      29
A      i_z     12      23
A      q_x     13      25 
A      p_z     11      25
A      i_z     15      26
A      q_m     17      28
A      q_z     11      24
A      p_x     14      25
A      i_m     15      26
A      q_x     11      21
A      i_z     13      22
A      q_z     11      24
A      p_x     13      30
A      i_m     15      26
A      q_m     17      28
A      p_x     16      29
A      i_z     12      23

好的,所以我需要根据col_2随机选择12行。我需要6个以"0"开头的随机行;p〃;在col_ 2和以"0"开头的6个随机行中;q〃;在col2。我用sample_n尝试了不同的方法,但我找不到从不同的代码中具体选择6和6的方法。

任何帮助都会很棒。

首先使用dput():使数据可再现

dta <- structure(list(group = c("A", "A", "A", "A", "A", "A", "A", "A", 
"A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", 
"A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", 
"A"), col_2 = c("p_m", "q_x", "i_z", "q_z", "p_x", "i_m", "q_m", 
"p_x", "i_z", "q_m", "q_x", "p_z", "i_z", "q_m", "q_x", "p_x", 
"i_m", "q_m", "p_x", "i_z", "q_x", "p_z", "i_z", "q_m", "q_z", 
"p_x", "i_m", "q_x", "i_z", "q_z", "p_x", "i_m", "q_m", "p_x", 
"i_z"), col_3 = c(12L, 11L, 13L, 11L, 14L, 15L, 17L, 16L, 12L, 
14L, 13L, 11L, 15L, 17L, 14L, 13L, 15L, 17L, 16L, 12L, 13L, 11L, 
15L, 17L, 11L, 14L, 15L, 11L, 13L, 11L, 13L, 15L, 17L, 16L, 12L
), col_4 = c(21L, 21L, 22L, 24L, 25L, 26L, 28L, 29L, 23L, 23L, 
25L, 25L, 26L, 28L, 29L, 30L, 26L, 28L, 29L, 23L, 25L, 25L, 26L, 
28L, 24L, 25L, 26L, 21L, 22L, 24L, 30L, 26L, 28L, 29L, 23L)), class = "data.frame", row.names = c(NA, 
-35L))

现在识别以"0"开头的值;p〃;以及";q〃;并绘制样本:

psam <- sample(which(strtrim(dta$col_2, 1) == "p"), 6)
dta[psam, ]
#    group col_2 col_3 col_4
# 26     A   p_x    14    25
# 22     A   p_z    11    25
# 16     A   p_x    13    30
# 12     A   p_z    11    25
# 5      A   p_x    14    25
# 19     A   p_x    16    29
qsam <- sample(which(strtrim(dta$col_2, 1) == "q"), 6)
dta[qsam, ]
#    group col_2 col_3 col_4
# 10     A   q_m    14    23
# 11     A   q_x    13    25
# 21     A   q_x    13    25
# 33     A   q_m    17    28
# 14     A   q_m    17    28
# 30     A   q_z    11    24

最新更新