2016-08-29 9 views
1

列tのデータフレームは、周波数10Hzのデータセットの最初の点からの累積時間差(秒)で構成されています。どのように私は分:秒形式でR時間に変換することができますので、ggplotsに表示されます。 x軸に5分ごとに目盛りを表示し、00:00、05:00、10:00などに対応する時刻を表示します。連続した数値データを時刻形式に変換するR

例:

# t columns is in seconds, thus 2000 seconds makes 33.33 minutes 
# Last tick value on the x axis I will show is 30:00 
d1 = 10 + runif(n = 5000) 
d2 = 20 + runif(n = 5000) 
d3 = 30 + runif(n = 5000) 
d4 = 40 + runif(n = 5001) 
d = c(d1,d2,d3,d4) 
t = seq(0, 2000, by = 0.1) 
DF = data.frame(t = t, d = d) 
ggplot(data = DF, aes(x = t, y = d)) + geom_line() 

は、あなたが数時間前から(コメントを含む)この質問/答えをチェックアウトする場合があります第二部については

+1

'lubridate'は、変換に例えば –

答えて

1

私はそれが良いだろうと思いますdifftimeでダミー日付付きのPOSIXctクラスに値を変換します。

DF$min_sec <- as.POSIXct("2016-01-01") + as.difftime(DF$t, unit="secs") 

ggplot(DF, aes(x = min_sec, y = d)) + geom_point() + 
    scale_x_datetime(date_breaks = "5 min", date_labels = "%M:%S", minor_breaks=NULL) 

enter image description here

+0

スポットがあります。どうもありがとうございます。 – ilyas

0
DF = data.frame(t = seq(0, 2000, by = 0.1), data = runif(n = 20001)) 

DF$t <- lubridate::ms(DF$t) 

、ありがとうございました。彼はまったく同じ質問をしました。

R: Aggregating time series data returns NA

私はこのような5分ごとに自分のデータを集計:その後、彼はこのようにそれをプロットしたと述べた

library(xts) 
    mydata <- read.csv("data.csv") 
    times  <- mydata$Time 
    X   <- as.POSIXct(times) 
    X   <- as.xts(X) 
    period.apply(mydata$T1, INDEX = endpoints(X, "minutes", 5), function(x) mean(x, na.rm=T)) 

DataTable <- table(cut(data, breaks="5 mins")) 
+0

ちょっと感謝を行う最も簡単な方法です。それはtカラムを何らかの時間に変換しましたが、私はそれをプロットできませんでした。私は他の質問と答えを理解していませんでした。例をより良くするために、少し変更しました。 – ilyas

+0

私はmsが私が望むことをしないと気付きました。 t値は「999M 7S」「999M 8S」「999M 9S」のようになります。私は間違っています。データの長さは33分です。 @Sean Reddy; – ilyas

+0

;コードでデータを正しく変換できません。 – cuttlefish44

関連する問題