【问题标题】:How to save output of for loop in separate csv files?如何将 for 循环的输出保存在单独的 csv 文件中?
【发布时间】:2018-01-21 05:13:14
【问题描述】:

作为我在下面附加的图像和代码,我有一组交易数据,每一行都有它的行业名称。

可重现的示例数据:

structure(list(Date = c(1201, 1201, 1201, 1201, 1201, 1201, 1201, 
1201, 1201, 1201), Sex = c("Male", "Male", "Female", "Male", 
"Male", "Female", "Male", "Female", "Male", "Male"), Age = c(10, 
15, 20, 15, 40, 50, 20, 30, 50, 20), City = c("Pheonix", "Atlanta", 
"Las Vegas", "Las Vegas", "Denver", "Pheonix", "Atlanta", "Las Vegas", 
"Las Vegas", "Minneapolis"), State = c("Arizona", "Georgia", 
"Nevada", "Nevada", "Colorado", "Arizona", "Georgia", "Nevada", 
"Nevada", "Minesota"), Industry = c("food", "furniture", "clothes", 
"transportation", "leisure", "food", "furniture", "food", "transportation", 
"furniture"), `no.of users` = c(48, 50, 83, 111, 186, 196.7, 
230.4, 264.1, 297.8, 331.5), `no. of approval cases` = c(48, 
21, 25, 48, 70, 63.7, 70.8, 77.9, 85, 92.1), `Total spending` = c(1541000, 
512000, 1757000, 1117000, 1740500, 1634700, 1735100, 1835500, 
1935900, 2036300)), .Names = c("Date", "Sex", "Age", "City", 
"State", "Industry", "no.of users", "no. of approval cases", 
"Total spending"), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, 
-10L))

我想做的是仅对行业名称与条件匹配的行进行子集化,并将其导出为单独的 csv 文件,文件名与其行业名称相对应。 例如,假设我有一个列表

 current_industry<-c("food","furniture")

首先,我想对行业名称匹配"food"的行进行子集化,然后将其保存到csv files name 'food',然后将行业名称匹配到"furniture"的以下行子集化并保存为单独的@ 987654327@名称'家具'。

我编写了 for 循环来执行此操作,但这不起作用,因为以下子集数据会预先替换那个。

for(i in current_industry){
  write.csv(subset(masterset, industry == i), "i.csv")} 

enter image description here

【问题讨论】:

  • 请分享masterset 作为可重复的示例。使用dput 分享,以便我们测试如何解决您的问题。
  • 你需要像 paste0(i, ".csv") 这样的东西作为 write.csv 的第二个参数
  • 抱歉,忘记分享示例。我编辑以分享可重复的示例。谢谢。
  • 第二个参数是什么意思?你能更详细地解释一下吗?谢谢..!

标签: r csv for-loop


【解决方案1】:

我认为这会奏效。运行此代码后,您将在工作目录中找到food.csvfurniture.csv

current_industry <- c("food", "furniture")

for (i in current_industry){
  dt2 <- subset(dt, Industry %in% i)
  write.csv(dt2, paste0(i, ".csv"), row.names = FALSE)
}

更新

您还可以考虑以下事项。此代码会将所有行业作为单独的 CSV 文件保存在您的工作目录中。

dt_list <- split(dt, f = dt$Industry)

lapply(dt_list, function(dt){
  write.csv(dt, paste0(unique(dt$Industry), ".csv"), row.names = FALSE)
})

以下将仅保存foodfurniture。关键是使用current_industry 子集dt_list

dt_list <- split(dt, f = dt$Industry)

dt_list2 <- dt_list[current_industry]

lapply(dt_list2, function(dt){
  write.csv(dt, paste0(unique(dt$Industry), ".csv"), row.names = FALSE)
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-27
    • 2021-09-13
    • 2010-12-13
    • 2022-11-28
    • 1970-01-01
    • 2020-08-08
    • 2020-05-28
    • 1970-01-01
    相关资源
    最近更新 更多