r - 将数据集拆分为多个数据集,其中包含r中的随机列

标签 r dataset split sample

我有一个很大的数据集。我想分成“n”个子数据集,每个子​​数据集具有相同大小的“s”。然而,如果最后一个数据集不能被数字整除,则它可能小于其他大小。并将它们作为 csv 文件输出到工作目录。

让我们看下面的小例子:

set.seed(1234)
mydf <- data.frame (matrix(sample(1:10, 130, replace = TRUE), ncol = 13))
mydf

   X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13
1   3  7  1  9  6  4  7  5  8   2   2   2   8
2   5  3  4  6  9  5  3 10  5   8  10   2  10
3   4  6 10  4  4  6  3  4  2   9   9   2   9
4  10 10  9  4  3  7  7  7 10   6   7  10   2
5  10  3  9  3  2 10  9  6  4   4   4   6   3
6   7  2  8  7  5  5 10 10  9   3   7   8   4
7   3  2  2  7 10  9  2  2 10   1   1  10   4
8   3  9  9  7  3  1  7  6 10   3  10   3   2
9   9  3  6  9  3  2  2  3  4   2   9  10  10
10  6  4  3  3  5  9  3  9 10   7   4   6  10

我想创建一个函数,将数据集随机分成 n 个子集(在本例中,大小为 3,因为有 13 列 - 最后一个数据集将有 1 列,其余 4 列,每列有 3 列)并输出为文本文件作为单独的数据集。

这是我所做的:

set.seed(123)
reshuffled <- sample(1:length(mydf),length(mydf), replace = FALSE)
# just crazy manual divide 
group1 <- reshuffled[1:3]; group2 <- reshuffled[4:6]; group3 <- reshuffled[7:9]
group4 <- reshuffled[10:12]; group5 <-  reshuffled[13]

# just manual 
data1 <- mydf[,group1]; data2 <- mydf[,group2]; ....so on;
# I want to write dimension of dataset at fist row of each dataset 
cat (dim(data1))
write.csv(data1, "data1.csv");  write.csv(data2, "data2.csv"); .....so on 

由于我必须生成 100 个子数据集,是否可以循环该过程?

最佳答案

也许有一个更干净、更简单的解决方案,但您可以尝试以下方法:

mydf <- data.frame (matrix(sample(1:10, 130, replace = TRUE), ncol = 13))

## Number of columns for each sub-dataset
size <- 3

nb.cols <- ncol(mydf)
nb.groups <- nb.cols %/% size
reshuffled <- sample.int(nb.cols, replace=FALSE)
groups <- c(rep(1:nb.groups, each=size), rep(nb.groups+1, nb.cols %% size))
dfs <- lapply(split(reshuffled, groups), function(v) mydf[,v,drop=FALSE])

for (i in 1:length(dfs)) write.csv(dfs[[i]], file=paste("data",i,".csv",sep=""))

关于r - 将数据集拆分为多个数据集,其中包含r中的随机列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10841859/

相关文章:

integer - Tableau 在文本表中将小数点四舍五入为整数

javascript - 使用 Javascript 根据像素将字符串拆分成多个部分

perl - 在 Perl 中,如何将此 CSV 字符串中的字段放入不带空格的数组中?

java - 将字符串拆分为重复的字符

r - 在 R 包文档文件(.Rd 文件)中编写符号

r - 仅将嵌套数据帧的一列除以整数值

hadoop - 处理千兆字节的数据

c# - 二进制流 'NN' 不包含有效的 BinaryHeader

r - 二次样条

Python Scikit Learn GMM 结果与 R Mclust 不一致