将CSV文件分为四个不同的文件

时间:2018-11-18 11:57:17

标签: r csv

我有一个数据集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

有什么想法吗?

1 个答案:

答案 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

您可以使用Mapwrite.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)