r - 将一个csv文件分成四个不同的文件
问题描述
我有一个 datasetdataset.csv
和一个 array 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
根据 array 将文件分成四个 cvs 文件v
。例如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
请问有什么想法吗?
解决方案
利用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)
推荐阅读
- spring - 如何使用 Java 配置在 Spring Batch 中配置 RetryTemplate
- c# - 在 IAsyncEnumerable 函数的返回类型中使用异步是否有价值?
- c# - C# - 如何从 Active Directory 获取用户“网页”属性?
- r - 如何抑制在 lapply 中触发的 Shiny observeEvent
- javafx - JavaFX:如何为更大的字体设置按钮大小?
- apache-storm - 我在哪里可以找到这个风暴可配置`topology.worker.timeout.secs`的默认值
- php - 在 PHP 中显示前导零
- c - 我编译的每个 C 程序都有病毒
- excel - Excel 中的 VBA - 打开 .dat 文件
- java - WebAssembly 运行时是否应该创建指令的 AST?