私はここで明白な何かを見逃しているに違いありませんが、これのために:
> range(data$timestamp)
[1] "2015-06-29 09:32:43.000 UTC" "2015-07-03 15:50:35.986 UTC"
私は次のようなことをしたい:
df <- data.frame(as.Date(range(data$timestamp)))
names(df) <- c('from', 'to')
インデックスを作成するためだけに追加の変数を必要とせずに、「from」と「to」の列を持つデータフレームを取得します。上記のようにdata.frame
記述すると、ベクトルは1列のデータフレーム内の2行に変換されます。私はの様々な組み合わせを試してみたcbind
、matrix
、t
、list
および非構造の試み。これを行うための最良の方法は何ですか?
df <- as.data.frame(as.list(as.Date(range(data$timestamp))))
names(df) <- c('from', 'to')
これは機能します。結局のところ、data.frame
は本当に特別なものlist
です。
ワンライナーが必要な場合は、を使用できますsetNames
。私はまた、このタイプのものが今でははるかに読みやすくなっていることを発見しましたmagrittr
:
data$timestamp %>% range %>% as.Date %>% as.list %>% as.data.frame %>% setNames(c("from", "to")
または、マトリックスを介してキャストすることもできます。
df <- as.data.frame(matrix(as.Date(range(data$timestamp)), ncol = 2))
names(df) <- c('from', 'to')
ただし、これclass
により、日付から(およびその他の属性)が削除されます。代わりに、を使用してベクトルの次元を設定した場合dim<-
、それを行列として扱うことも、処理することもありprint
ませんas.data.frame
(まだがあるためclass
Date
)。
これを回避するには、data.frameを作成した後にDateに変換します。
df <- as.data.frame(matrix(range(data$timestamp), ncol = 2))
df[] <- lapply(df, as.Date)
names(df) <- c('from', 'to')
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加