0

次のようなデータベースがあります。

start<-as.POSIXct("2012-01-15")
interval<-60
end<-start+as.difftime(31,units="days")
date<-seq(from=start,by=interval*60, to=end) # date/time information
l<-length(date)

stations<-as.factor(rep(1:3,len=l)) # stations
df<-data.frame(date,stations) # data frame

私が望むのは、このデータ フレームから駅の列をいくつかの列 (この例では 3 列になります) に再形成し、各駅が各日付/時刻の行に記録された回数を計算することです。ただし、データベースから元の日付/時刻列を保持したいと思います。放送局が特定の日付/時刻に記録されていない場合は、ゼロの値を割り当てたいと思います。

理想的には、次のような出力が必要です。

date              1   2   3
2012-01-15 0:00   1   0   0
2012-01-15 1:00   0   1   0
2012-01-15 2:00   0   0   1
2012-01-15 3:00   1   0   0
2012-01-15 4:00   0   1   0
2012-01-15 5:00   0   0   1
2012-01-15 6:00   1   0   0
2012-01-15 7:00   0   1   0
2012-01-15 8:00   0   0   1
2012-01-15 9:00   1   0   0
2012-01-15 10:00  0   1   0
4

2 に答える 2

2

dcast()ライブラリの関数を使用してみることができますreshape2

library(reshape2)
dcast(df,date~stations,length)
                   date 1 2 3
1   2012-01-15 00:00:00 1 0 0
2   2012-01-15 01:00:00 0 1 0
3   2012-01-15 02:00:00 0 0 1
4   2012-01-15 03:00:00 1 0 0
于 2012-12-25T11:44:00.620 に答える
2

関数を使用できますxtabs

xtabs( ~ date + stations, df)
于 2012-12-25T12:09:11.893 に答える