在R Automation

时间:2018-05-08 19:44:36

标签: r dplyr plyr tidyr

我有一个CSV文件,其中有两列Name和Number,这个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

每天都这样做,是否有更好的方法来实现整个过程的自动化。 希望我的问题清晰易懂,对不起发表这么长的问题。

三江源。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

示例数据并设置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)