dplyr
のデータフレームは、100k +行と〜200個のカラムを持ちます。 Excel形式の日付値(1900年1月1日以降の日数)を含む約15列の列があり、列名にはdate
文字列が含まれているため、データフレームのサブセット化がかなり容易になります。mutate_eachを使用してdfのサブセットを更新します。
library(dplyr)
x <- data.frame(date1 = 45000+ 500*rnorm(100),
date2 = 50000+ 500*rnorm(100),
var1 = 50 * rnorm(100),
var2 = 100 + 20 * rnorm(100))
> x %>% head
date1 date2 var1 var2
1 44952.83 49432.88 8.125523 125.95802
2 44331.47 49231.76 -34.814162 117.26881
3 44597.69 49651.91 27.747881 108.45787
4 45113.50 49802.87 24.584569 83.84904
5 46212.14 49972.59 72.444414 80.61595
6 45753.38 50074.57 -34.927552 127.70018
date_cols <- x %>% select(contains('date', ignore.case=T)) %>% names
> date_cols
[1] "date1" "date2"
私は、他の列を変更することなく、実際のR
日付時刻にこれらの日付列を変更したいと思います。動作しません、私は次のことを試してみた
x %>% select_(.dots = date_cols) %>%
mutate_each(funs(as.Date(., origin="1900-01-01"))) %>%
head
date1 date2
1 2023-01-28 2035-05-05
2 2021-05-17 2034-10-16
3 2022-02-07 2035-12-10
4 2023-07-08 2036-05-09
5 2026-07-11 2036-10-26
6 2025-04-08 2037-02-05
:
x %>% select_(.dots = date_cols) <- x %>% select_(.dots = date_cols) %>%
mutate_each(funs(as.Date(., origin="1900-01-01")))
を私は良くあり推測私はちょうど私のデータフレームの唯一date_cols
サブセットを更新する方法を見つけ出すことはできません元のデータフレームを「rbinding」する方法は、date_cols
サブセットが一度変更された日付列を使用しないでください。
'funs'の後に' mutate_each'の列を指定することができます。新しい(0.5.0) 'mutate_at'と' mutate_if'も見てください。 – alistaire