我有一个数据集dataset.csv
和一个数组v
,它们具有相同的行数。数据集示例:
1 1 1 2 3
2 2 1 2 3
3 1 1 1 1
4 2 2 2 1
5 2 2 3 2
6 1 2 3 2
7 2 1 2 2
8 1 1 3 2
9 1 1 3 3
阵列v
:示例
1
4
2
3
3
1
2
1
4
我想根据数组v
将文件dataset.csv
划分为四个cvs文件。例如,v[1]=1
,这意味着文件dataset-1.csv
中的dataset.csv
的第一行;v[2]=4
这意味着dataset.csv
的第二行进入文件dataset-4.csv
等等
换句话说,我们有四个文件,dataset-1.csv
:
1 1 1 2 3
6 1 2 3 2
8 1 1 3 2
dataset-2.csv
:
3 1 1 1 1
7 2 1 2 2
dataset-3.csv
:
4 2 2 2 1
5 2 2 3 2
和dataset-4.csv
:
2 2 1 2 3
9 1 1 3 3
有什么想法吗?
使用split
out <- split(df1, v)
out
#$`1`
# V1 V2 V3 V4 V5
#1 1 1 1 2 3
#6 6 1 2 3 2
#8 8 1 1 3 2
#$`2`
# V1 V2 V3 V4 V5
#3 3 1 1 1 1
#7 7 2 1 2 2
#$`3`
# V1 V2 V3 V4 V5
#4 4 2 2 2 1
#5 5 2 2 3 2
#$`4`
# V1 V2 V3 V4 V5
#2 2 2 1 2 3
#9 9 1 1 3 3
您可以使用Map
和write.csv
保存所有四个文件
path <- "path/to/file/"
Map(write.csv, x = out, file = paste0(path, "dataset-", names(out), ".csv"))
数据
df1 <- read.table(text = "1 1 1 2 3
2 2 1 2 3
3 1 1 1 1
4 2 2 2 1
5 2 2 3 2
6 1 2 3 2
7 2 1 2 2
8 1 1 3 2
9 1 1 3 3", header = FALSE)