【问题标题】:split large CSV on the column value (order date) into small CSV and add double quotes to Order Comments Column through R将列值(订单日期)上的大 CSV 拆分为小 CSV,并通过 R 将双引号添加到 Order Comments Column
【发布时间】:2018-05-01 16:38:22
【问题描述】:

我有这样的csv文件

customerid orderid paymentamount   orderdate         ordernotes
1213        1233     16.99        01/01/2017 0:05     abcd acd cbvfd
1222        2343     44.99        01/01/2017 1:05     xyzzz
1234        4565     20.99        01/01/2017 2:05   
1267        6754     11.99        01/02/2017 0:05     abcdabv
1785        8975     12.99        01/02/2017 1:05     xsdsgff
7654        7657     13.99        01/03/2017 2:00 
6545        7867     10.99        01/03/2017 4:00     1/7 xyzzz
                                                      2/8 abcd

我有很多行数据,想根据订单日期将这个大 CSV 拆分为每天的单独 CSV。我试过了,但没有得到任何结果。我还想在订单注释列中添加双引号。

x1 <- read.csv("xyz.csv", header=T, sep=",")
for (date in levels(x1$orderdate)){
  tmp=subset(x1,orderdate== date)
  fn=paste('x1/',gsub(' ','',date),sep='')
  write.csv(tmp,fn,row.names=FALSE)
}

【问题讨论】:

标签: r csv


【解决方案1】:

您可以将orderdate列转换为上课日期,提取唯一日期并继续拆分:

library(lubridate)

x$orderdate <- strptime(x$orderdate, format = "%d/%m/%Y %H:%M")
for (d in date(x$orderdate)){
  tmp <- subset(x, date(orderdate) == d)
  # do stuff...
}

【讨论】:

  • 当我运行代码时它最终给了我 + 并且什么都没有显示
  • 某处缺少括号?
【解决方案2】:

您应该能够执行以下操作:

x1 <- read.csv("xyz.csv", sep=",", stringsAsFactors = FALSE)
lapply(unique(as.Date(x1$orderdate, "%d/%m/%Y")), function(d) {
  df <- x1[as.Date(x1$orderdate, "%d/%m/%Y")==d,]
  invisible(write.csv(df, sprintf("%s.csv", as.character(d))))
})

【讨论】:

  • ..当我运行代码时它在最后给了我 + ..没有任何显示
  • @jsingh 道歉,已纠正错误并使用您的数据进行测试。
  • @anthonyserious..如何将这些写入单独的 CSV?
  • @jsingh 代码已经为您完成了这项工作 - 对于每个日期,它都会为 x1$orderdate 中的每个唯一日期创建一个名为 YYYY-MM-DD.csv 的 CSV。请参阅第 4 行的 write.csv 部分。
猜你喜欢
  • 2019-07-15
  • 2014-10-03
  • 2019-10-05
  • 1970-01-01
  • 2021-01-26
  • 2012-12-11
  • 1970-01-01
  • 2023-03-05
  • 1970-01-01
相关资源
最近更新 更多