-1
data=read.csv("filelocation",header=T)

obs timedate   weight
504 2010-10-04 52495    
505 2010-10-01 53000    
506 2010-09-30 52916    
507 2010-09-29 52785    
508 2010-09-28 53348    
509 2010-09-27 52885    
510 2010-09-24 52174    
511 2010-09-23 51461    
512 2010-09-22 51286    
513 2010-09-21 50968    
514 2010-09-20 49250    

我在 R 中加载了一些数据,但是 CSV 文件中的数据是从最新的->最旧的,我想重新排列到最新的->最旧的。我怎么做?我还尝试格式化“日期”变量,以便 R 可以将我正在加载的数据识别为时间序列,以便区分/滞后“权重”变量,但我没有运气。我究竟做错了什么?我正在使用

timedate=as.Date(data$timedate,"%Y-%m-%d")

谢谢!

4

2 回答 2

2

干得好:

R> dat <- read.table(file=textConnection("obs     timedate   Weight
504 2010-10-04  52495   
505 2010-10-01  53000   
506 2010-09-30  52916   
507 2010-09-29  52785   
508 2010-09-28  53348   
509 2010-09-27  52885   
510 2010-09-24  52174   
511 2010-09-23  51461   
512 2010-09-22  51286   
513 2010-09-21  50968   
514 2010-09-20  49250"), header=TRUE)
+ + + + + + + + + + + 
R>

现在将日期解析为Date并重新显示以进行检查:

R> dat$timedate <- as.Date(as.character(dat$timedate))
dat
   obs   timedate  Weight
1  504 2010-10-04  52495
2  505 2010-10-01  53000
3  506 2010-09-30  52916
4  507 2010-09-29  52785
5  508 2010-09-28  53348
6  509 2010-09-27  52885
7  510 2010-09-24  52174
8  511 2010-09-23  51461
9  512 2010-09-22  51286
10 513 2010-09-21  50968
11 514 2010-09-20  49250
R>

只需按日期重新排序:

R> dat[order(dat$timedate),]
   obs   timedate  Weight
11 514 2010-09-20  49250
10 513 2010-09-21  50968
9  512 2010-09-22  51286
8  511 2010-09-23  51461
7  510 2010-09-24  52174
6  509 2010-09-27  52885
5  508 2010-09-28  53348
4  507 2010-09-29  52785
3  506 2010-09-30  52916
2  505 2010-10-01  53000
1  504 2010-10-04  52495
R> 
于 2012-12-16T23:26:37.217 回答
2

您还可以在使用参数导入时将timedate列设置为 a 。DatecolClasses

dat <- read.csv(
                "filelocation",
                header=TRUE,
                colClasses=c("numeric","Date","numeric")
               )

...然后按照@Dirk 的建议重新排序:

dat <- dat[order(dat$timedate),]
于 2012-12-16T23:33:26.257 回答