複数の文字列(約20)があり、すべてを日付形式に変更し、rを使用して時間を削除したいと思います。私はもう試した loops
, mutate
そして apply
.
これは、2つの列のみを使用したサンプルデータです。
col1 = c("2017-04-01 23:00:00", "2017-03-03 00:00:01", "2017-04-02
00:00:01")
col2 = c("2017-04-10 08:41:49", "2017-04-10 08:39:48", "2017-04-10
08:41:51")
df <- cbind(col1, col2)
私はもう試した:
df <- df %>% mutate(df, funs(ymd))
そして
df <- df %>% mutate(df, funs(mdy))
両方とも私にエラーを与えました。また、すべての列名をリストに入れて、
for(i in namedlist) {
as_date(df[i])
glimpse(df)
}
それもうまくいきませんでした。
私はからの答えを使用しようとしました lubridateとdplyrを使用して複数の列を日付に変換します そしてそれもうまくいきませんでした。その投稿では、特定の変数を変換する必要がありました。すべての変数を変換して、 var
コマンドは適用されません。
これを効率的に行うための提案はありますか?ありがとうございました。
回答:
回答№1は1すべての列に適用する場合は、次のコマンドで非常に短い呼び出しを行うことができます。 lapply
。ここで使用して渡します data.table
:
library( data.table )
setDT( df )
df <- df[ , lapply( .SD, as.Date ) ]
テストデータでは、これにより次のことがわかります。
> df
col1 col2
1: 2017-04-01 2017-04-10
2: 2017-03-03 2017-04-10
3: 2017-04-02 2017-04-10
注:テストデータは実際には matrix
、それであなたはそれをに変換する必要があります data.frame
最初に(または直接 data.table
)。
ベースだけでも同じことができます R
、しかし私は個人的に上記の解決策の方が好きです:
df <- as.data.frame( lapply( df, as.Date ) )
> df
col1 col2
1 2017-04-01 2017-04-10
2 2017-03-03 2017-04-10
3 2017-04-02 2017-04-10