我有一个数据集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
我想根据数组dataset.csv
将文件v
分成四个cvs文件。例如v[1]=1
,这意味着dataset.csv
的第一行位于文件dataset-1.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
有什么想法吗?
答案 0 :(得分:1)
使用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)