0

今私のデータフレームは以下のようなものです

dput(head(t.zoo))

structure(c(85.92, 85.85, 85.83, 85.83, 85.85, 85.87, 1300, 1300, 
1299.75, 1299.75, 1299.75, 1300), .Dim = c(6L, 2L), .Dimnames = list(
NULL, c("cl", "es")), index = structure(list(sec = c(0.400000095367432, 
0.900000095367432, 1.40000009536743, 1.90000009536743, 2.40000009536743, 
2.90000009536743), min = c(30L, 30L, 30L, 30L, 30L, 30L), hour = c(10L, 
10L, 10L, 10L, 10L, 10L), mday = c(6L, 6L, 6L, 6L, 6L, 6L), mon = c(5L, 
5L, 5L, 5L, 5L, 5L), year = c(112L, 112L, 112L, 112L, 112L, 112L
), wday = c(3L, 3L, 3L, 3L, 3L, 3L), yday = c(157L, 157L, 157L, 
157L, 157L, 157L), isdst = c(1L, 1L, 1L, 1L, 1L, 1L)), .Names = c("sec", 
"min", "hour", "mday", "mon", "year", "wday", "yday", "isdst"
), class = c("POSIXlt", "POSIXt"), tzone = c("", "EST", "EDT"
)), class = "zoo")

2 つの質問があります。1 つ目は、最初の列に変数名を追加したいということです。2 つ目は、2010 年 6 月 6 日を示すのに役立つカテゴリ変数を作成したいということです (3 つの別々の日があるため)。

日付データはどうすればいいですか?

4

2 に答える 2

0

zooオブジェクトは、sとは少し異なりdata.frameます。

「最初の列」(あなたがそれを参照したように)は実際には列ではなく、indexあなたのオブジェクトの列です。index(t.zoo)それが何を返すか試してみてください。これindexは本当に一意の値を持つ必要があります。あなたの場合、重複した値があり、計算に影響を与える可能性があります。

aへの変換data.frameは次のように行うことができます。indexfromに基づいて個別の「Date」変数と「Time」変数を追加しましたt.zoo

require(zoo) # Load the `zoo` package if you haven't already done so
t.df = data.frame(Date = format(index(t.zoo), "%Y-%m-%d"), 
                  Time = format(index(t.zoo), "%H:%M:%S"),
                  data.frame(t.zoo))
t.df
#         Date     Time    cl      es
# 1 2012-06-06 10:30:00 85.92 1300.00
# 2 2012-06-06 10:30:00 85.85 1300.00
# 3 2012-06-06 10:30:01 85.83 1299.75
# 4 2012-06-06 10:30:01 85.83 1299.75
# 5 2012-06-06 10:30:02 85.85 1299.75
# 6 2012-06-06 10:30:02 85.87 1300.00

オブジェクトへの変換zoo(新しい「日付」列と「時間」列、または追加した他の列を保持する)は、次のように実行できます。

zoo(t.df, order.by=index(t.zoo))

ただし、一意の「order.by」値がないため、これにより警告が表示されることに注意してください。

于 2012-07-14T11:09:44.277 に答える
0

私はzooクラスに慣れていないので、次のコードはうまくいきませんが、うまくいくようです。

yourdata<-as.matrix(yourdata)  
justdate <- substr(rownames(yourdata), 1, 10)
justtime <- substr(rownames(yourdata), 11, 19)  
row.names(yourdata) <- NULL  
yourdata<-as.data.frame(yourdata)  
yourdata[,"justdate"]<-justdate  
yourdata[,"justtime"]<-justtime  
yourdata[yourdata$justdate=="2012-06-06","newvariable"]<-1  
> yourdata  
  cl      es   justdate  justtime newvariable  
1 85.92 1300.00 2012-06-06  10:30:00           1  
2 85.85 1300.00 2012-06-06  10:30:00           1  
3 85.83 1299.75 2012-06-06  10:30:01           1  
4 85.83 1299.75 2012-06-06  10:30:01           1  
5 85.85 1299.75 2012-06-06  10:30:02           1  
6 85.87 1300.00 2012-06-06  10:30:02           1  
于 2012-07-13T17:17:16.027 に答える