1

このデータのテーブルを作成するエレガントな方法を探しています:

興味のある日付のベクトルがあります

> date
[1] "2008-01-01" "2008-01-02" "2008-01-03" "2008-01-04" "2008-01-05"

およびウィキペディアからのデータの表 (1 日あたりのビュー)

> changes
2007-08-14 2007-08-16 2007-08-17 2007-12-29 2008-01-01 2008-01-03 2008-01-05 
         4          1          4          1          1          1          2 

私が欲しいのは、興味のある日付のデータを含むテーブルです

> mytable
2008-01-01 2008-01-02 2008-01-03 2008-01-04 2008-01-05
         1          0          1          0          2

これをエレガントに行う方法についてのヒントを誰かに教えてもらえますか?


dputの出力は次のとおりです。

> dput(date)
structure(c(13879, 13880, 13881, 13882, 13883), class = "Date")

> dput(changes)
structure(c(15L, 2L, 9L, 1L, 1L, 1L, 3L), .Dim = 262L, .Dimnames = structure(list(
c("2007-08-14", "2007-08-16", 
"2007-08-17", "2007-12-29", "2008-01-01", "2008-01-03", "2008-01-05")), .Names = ""), class = "table")
4

1 に答える 1

1

matchを使用するのが最も簡単な方法だと思います。as.character日付を変更の名前に一致させるには、を使用する必要がありますtable...

#  Match dates in the names of 'changes' vector. No match gives NA
#  Using setNames we can return the object and set the names in one command
mytable <- setNames( changes[ match(as.character(date) , names(changes)) ] , date )

#  Change NA values to 0 (is this sensible? Does no data mean 0 views or was the data not available?)
mytable[ is.na(mytable) ] <- 0

mytable
#2008-01-01 2008-01-02 2008-01-03 2008-01-04 2008-01-05 
#         1          0          1          0          3 
于 2013-09-17T08:27:24.827 に答える