【问题标题】:Append Data to Existing Data with Current date In R Automation在 R 自动化中将数据附加到具有当前日期的现有数据
【发布时间】:2018-10-18 20:30:35
【问题描述】:

我有一个 CSV 文件,它有两列名称和编号,这个 CSV 每天都会生成,我想要的是有一个变量并将我每天得到的数据附加到这个变量中,并带有当前日期以用于记录目的。 需要将此过程作为日常任务自动化。 我所做的如下。

假设这是第一个数据

   name  number  
1    a      1    
2    b      2    
3    c      3    
4    d      4    
5    e      5    
6    f      6     

以这种方式将日期添加到此数据中

   df <- cbind(df,Date = march8)  //march8 has date of this day

添加日期后

   name   number     Date
1    a      1    2018-05-08
2    b      2    2018-05-08
3    c      3    2018-05-08
4    d      4    2018-05-08
5    e      5    2018-05-08
6    f      6    2018-05-08

现在我想将当前日期的另一个数据附加到该数据中

我的新数据

   name  number 
1    l      3 
2    c      4 
3    a      5 
4    c      6 
5    d      4 
6    g      2

再次添加日期。

df1 <- cbind(df1,Date = Sys.Date())

添加日期后

  name number   Date
1    l      3  2018-05-09
2    c      4  2018-05-09
3    a      5  2018-05-09
4    c      6  2018-05-09
5    d      4  2018-05-09
6    g      2  2018-05-09

最后

 df <- rbind(df,df1)

合并后

     name number  Date
  1    a      1   2018-05-08
  2    b      2   2018-05-08
  3    c      3   2018-05-08
  4    d      4   2018-05-08
  5    e      5   2018-05-08
  6    f      6   2018-05-08
  7    l      3   2018-05-09
  8    c      4   2018-05-09
  9    a      5   2018-05-09
 10    c      6   2018-05-09
 11    d      4   2018-05-09
 12    g      2   2018-05-09

每天都这样做,有没有更好的方法来自动化整个过程。 希望我的问题清晰易懂,很抱歉发布这么长的问题。

谢谢。

【问题讨论】:

  • 我不确定您要实现的自动化程度更高,因为这似乎每天只需要运行几行代码。但是对于新的日子,您可以先运行df &lt;- rbind(df,df1),然后用df$Date &lt;- ifelse(is.na(df$Date),Sys.Date(),df$Date) 替换缺失的日期值。但是,这不会以任何方式缩短您的代码。
  • rbind 如何在不先添加日期的情况下工作,列数将与 dfdf1 不匹配,并且会产生错误。

标签: r dplyr plyr tidyr


【解决方案1】:

示例数据和设置 wd()

  xy = data.frame(Date = Sys.Date()-1, matrix(runif(5*6), ncol = 6))
  setwd(....)

第一次使用 write.csv 编写

  write.csv(xy,"data.csv", row.names=F)

稍后,使用 write.table

  xy = data.frame(Sys.Date(), matrix(runif(5*6), ncol = 6))
  write.table(xy, file="data.csv", sep = ",", append = T, col.names = F, row.names=F)

【讨论】:

    【解决方案2】:

    如果它应该在服务器中运行,请尝试使用 Linux cron 之类的东西每天调用 bash 脚本。在 bash 脚本中,您可以调用 Rscript 将新数据附加到 csv 文件中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-14
      • 2012-08-04
      • 1970-01-01
      • 2021-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多