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")
谢谢!
答案 0 :(得分: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>
答案 1 :(得分:2)
使用timedate
参数导入时,您还可以将Date
列设置为colClasses
。
dat <- read.csv(
"filelocation",
header=TRUE,
colClasses=c("numeric","Date","numeric")
)
...然后根据@Dirk的建议重新排序:
dat <- dat[order(dat$timedate),]