如何从数据集中选择随机列

亚当·阿敏|

我有一个像这样的数据集:

ID  val1    val2    val3    val4
1   4       9       10      16
2   1.5     6       2.3     99
3   8       7       7       10

我想检查列数(即val列数)是否少于6,如果是这种情况,我想从现有列中随机选择剩余的列数,然后将其再次添加到数据集中。

在上述情况下,剩余的列数为2(val的6至4列)。在这种情况下,我想从val列中选择2个随机列,并将它们添加到数据集中。一种可能的解决方案是:

ID  val1    val2    val3    val4   val2   val1
1   4       9       10      16     9      4
2   1.5     6       2.3     99     6      1.5
3   8       7       7       10     7      8

val2val1被随机选择并添加到数据集中。我面临的问题是如何选择随机列。我知道如何通过使用sample_n函数来选择随机行,但是找不到任何函数来选择随机列。

到目前为止,我所做的是:

t <- read.csv("path", header=TRUE) # load file
numCols <- 6
cc <- ncol(t[,-1]) #no need for ID column
if(cc < numCols){
   # I need some function to select random columns 
}
盖什特

数据框只是一种特殊的列表,因此您可以将其视为选择随机列表元素而不是列。这就是说,随机抽取两列样本就很简单sample(df, 2)在您的情况下,您可以通过cbind从中获取一个示例来保持简洁df[-1],假设ID是第一列:

nc <- 6 + 1 # val columns plus ID column

if(ncol(df) < nc){
    cbind(df, sample(df[-1], nc - ncol(df)))
}

#### OUTPUT ####

  ID val1 val2 val3 val4 val3 val2
1  1  4.0    9 10.0   16 10.0    9
2  2  1.5    6  2.3   99  2.3    6
3  3  8.0    7  7.0   10  7.0    7

如果您不知道在哪里ID,可以使用df[-grep("ID", names(df))]代替df[-1]如果还有其他既不是ID也不以它们开头的列,val则应使用df[grep("^val", names(df))]在后一种情况下,您还需要对进行调整,例如nc1您不仅需要添加不以开头的列数,还需要对其进行调整val

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

排序后如何仅从数据集中选择特定列

如何从数据集中选择小时值?

如何在Java中使用Seq <String>从数据集中选择列?

我如何以简洁的方式在R中的数据集中选择一组列

如何从Tensorflow中的多个对齐数据集中随机选择数据?

Panda .loc或.iloc从数据集中选择列

使用列值从大型数据集中选择特定行

如何从包含数年的数据集中选择数年

如何从数据帧子集中随机选择元素?

如何使用熊猫从数据集中随机选择行?

如何从数据集中随机选择n个块

如何在Spark SQL中选择仅存在于我查询的数据子集中的列?

如何从每个子集的概率不同的超集中选择一个随机数

如何从mysql数据库中选择随机记录

如何从jsonb列中选择数据?

如何在Excel中选择数据列?

如何从数据框中选择离散列

如何从表中选择重复的列数据

如何从数据框中选择汇总列

如何从列中选择极限数据?

TensorFlow从mnist数据集中选择标签

从数据集中选择最大维度

如何从python的CSV文件的列中选择随机值?

从大型数据集中的成对列中选择最后一个有效数据日期

如何从SAS数据集中选择与另一SAS数据集中的至少一个值匹配的所有行

如何为除当前组之外的所有组选择数据集中的随机数据

如何在R中另一个数据集的列中选择一个数据集中的一些行?

如何left_join()两个数据集,但仅从其中一个数据集中选择特定的列?

r-在数据集中选择列组合的最佳功能