我需要将每一行写成csv。 示例数据:
myData <- structure(list(SID = c(200101L, 200102L, 200201L, 200202L, 200203L
), pr_1979_01_01 = c(11.0536289215088, 11.0536289215088, 7.78615140914917,
7.78615140914917, 7.78615140914917), pr_1979_01_02 = c(10.554141998291,
10.554141998291, 11.3847818374634, 11.3847818374634, 11.3847818374634
), pr_1979_01_03 = c(0, 0, 0, 0, 0), pr_1979_01_04 = c(0.453366577625275,
0.453366577625275, 0.38262751698494, 0.38262751698494, 0.38262751698494
)), .Names = c("SID", "pr_1979_01_01", "pr_1979_01_02", "pr_1979_01_03",
"pr_1979_01_04"), class = c("tbl_df", "data.frame"), row.names = c(NA,
-5L))
我知道我可以使用subset()
或dplyr::filter()
,但我有几百行和几千列。我该如何自动化?
答案 0 :(得分:1)
我们使用lapply
遍历数据集的行序列,对数据集的行进行子集化,然后在每行上使用write.csv
lapply(seq_len(nrow(myData)), function(i)
write.csv(myData[i,], paste0('SID', i, '.csv'),
row.names=FALSE, quote=FALSE))
修改强>
要使用列中的名称(例如站点ID)编写文件,请创建所述列的向量。
SID <- myData$SID
然后使用以下内容:
lapply(seq_len(nrow(myData)), function(i)
write.csv(myData[i,], paste0(SID[i], '.csv'),
row.names=FALSE, quote=FALSE))
请注意粘贴参数的差异:
paste0(SID[i], i, '.csv')
vs
paste0(SID[i], '.csv')