当前位置: 首页 > 编程笔记 >

如何基于R中的data.table的组列创建随机样本?

蔺霄
2023-03-14
本文向大家介绍如何基于R中的data.table的组列创建随机样本?,包括了如何基于R中的data.table的组列创建随机样本?的使用技巧和注意事项,需要的朋友参考一下

随机抽样有助于我们减少分析中的偏差。如果我们有分组数据,那么我们可能想根据分组找到随机样本。例如,如果我们有一个带有组变量的数据框,并且每个组包含十个值,那么我们可能想要创建一个随机样本,在该样本中,将从每个组中随机选择两个值。这可以通过使用.SD内的示例函数来完成

示例

考虑下面的data.table-

library(data.table) Group<-rep(c("A","B","C","D","E"),times=4) Percentage<-sample(1:100,20) dt1<-data.table(Group,Percentage) dt1

输出结果

  Group Percentage
1:    A    97
2:    B    68
3:    C    19
4:    D    32
5:    E    98
6:    A    48
7:    B    94
8:    C    54
9:    D    7
10:   E    76
11:   A    10
12:   B    31
13:   C    59
14:   D    84
15:   E    41
16:   A    99
17:   B    1
18:   C    72
19:   D    42
20:   E    17

从每个组创建大小为2的随机样本-

示例

dt1[,.SD[sample(.N, min(2,.N))],by=Group]

输出结果

   Group Percentage
1:    A    48
2:    A    99
3:    B    94
4:    B    31
5:    C    54
6:    C    59
7:    D    42
8:    D    84
9:    E    98
10:   E    76

让我们看另一个例子-

示例

Class<-rep(c("First","Second","Third","Fourth"),times=10)
Experience<-sample(1:5,40,replace=TRUE)
dt2<-data.table(Class,Experience)
head(dt2,10)

输出结果

   Class Experience
1: First    4
2: Second   2
3: Third    4
4: Fourth   2
5: First    4  
6: Second   5
7: Third    3
8: Fourth   5
9: First    3
10: Second  5

示例

tail(dt2,10)

输出结果

   Class Experience
1: Third    4
2: Fourth   2
3: First    5
4: Second   2
5: Third    1
6: Fourth   4
7: First    5
8: Second   2
9: Third    4
10: Fourth  4

示例

dt2[,.SD[sample(.N, min(5,.N))],by=Class]

输出结果

  Class Experience
1: First    3
2: First    3
3: First    4
4: First    5
5: First    5
6: Second   5
7: Second   2
8: Second   5
9: Second   2
10: Second  1
11: Third   3
12: Third   1
13: Third   4
14: Third   3
15: Third   4
16: Fourth  2
17: Fourth  5
18: Fourth  2
19: Fourth  4
20: Fourth  2
 类似资料:
  • 假设我有以下数据 现在我想向添加两个新列,分别命名为和,具有各自的值(1,2)。我可以使用循环来执行此操作,但我想以data.table的方式执行。 结果将是这样的: 到目前为止,我想出了类似这样的东西 其中< code>xx是一个< code > data . table -类似于< code >的命令。N,它寻址< code > by -组的值。 谢谢你的帮助! 附录:for-loop 方式

  • 我有一个数据帧rT,它可以有任意数量的列和行。 我想生成一个新的数据帧,delT,具有与rT相同的列数(也具有相同的列标题),有n行,其中每列是随机和均匀的,delT每列的最小值基于rT相应列的最小值和最大值。rT的最小值和最大值不一定在每列的第一行和最后一行。 例如,使用 runif: 其中x是rT的适当列。对于delT的A列(基于rT的A栏),runif的max(x)=73.750,min(x

  • 本文向大家介绍如何随机化R中已经创建的向量?,包括了如何随机化R中已经创建的向量?的使用技巧和注意事项,需要的朋友参考一下 有些向量是在R中随机创建的,而有些不是在R中随机创建的,但是我们可以对这两种类型的向量进行随机化处理。随机化可确保无偏性,因此,特别是在创建具有易于改变分析结果的目标的矢量时,这是必要的。R中的随机化可以简单地借助样本函数完成。 不是随机创建的向量的随机化- 随机创建的向量的

  • 本文向大家介绍如何在R中创建具有随机值的矩阵?,包括了如何在R中创建具有随机值的矩阵?的使用技巧和注意事项,需要的朋友参考一下 通常,使用给定值创建矩阵,但是如果我们要创建具有随机值的矩阵,则将对矩阵函数使用常规方法。R中的随机选择可以根据我们的目标以多种方式完成,例如,如果要从正态分布中随机选择值,则将使用rnorm函数并将其存储在矩阵中,然后将其传递到矩阵函数中。 示例 输出结果 示例 输出结

  • 本文向大家介绍如何通过R中data.table中的列名删除列?,包括了如何通过R中data.table中的列名删除列?的使用技巧和注意事项,需要的朋友参考一下 我们可以通过将列设置为NULL来实现 示例 删除一列x 删除两列

  • 问题内容: 这个问题:如何生成随机BigInteger描述了一种与BigIntegers实现与Random.nextInt(int n)相同的语义的方法。 我想对BigDecimal和Random.nextDouble()做同样的事情。 上述问题的一个答案建议创建一个随机的BigInteger,然后从中以随机的比例创建一个BigDouble。一个非常快速的实验表明这是一个非常糟糕的主意:) 我的直