2015-10-29 2 views
1

Мой dataframeПреобразование столбца в data.frame на сегодняшний день

a1 <- c("a","a","b","b","c","d","e","e") 
b2 <- c("01.01.2015", "02.02.2015", "14.02.2012", "16.08.2008", "17.06.2003", "31.01.2015", "07.01.2022", "09.05.2001") 
c3 <- c("1a", "2b", "3c", "4d", "5e", "6f", "7g", "8h") 
d3 <- c(1:8) 

df2 <- data.frame(a1,b2,c3,d3, stringsAsFactors = F) 

Мой код.

library(dplyr) 
library(magrittr) 

test <- df2 %>% 
    group_by(a1) %>% 
    as.Date(b2, format = "%d.%m.%Y") 

Ошибка в as.Date.default (, b2, формат = "% d% M% Y..".): не знаю, как преобразовать '' к классу «Дата»

Ну, я попробовал без трубы:

df$b2 <- as.Date(df$b2, format = "%d.%m.%Y") 

Ошибка в ДФ $ b2: объект типа 'замкнутость' не subsettable

Первый : Почему я получаю два разных сообщения об ошибках, так как я (по моему мнению) делаю то же самое?

Во-вторых, почему я не могу конвертировать мою колонку на сегодняшний день ?!

Я мог бы добавить, что мне известно об использовании mutate, чтобы изменить колонку как формат date. Но мне интересно, почему мой подход не работает.

+0

замечание для «Первого»: вы, кажется, не имеют data.frame под названием 'df' но один называется' 'df2' – Cath

+0

df' является функцией. Вероятно, вы имеете в виду 'df2'. Итак, ответ на ваш вопрос: опечатка. –

+1

@CathG oh дорогой .... – Stophface

ответ

3

ли преобразования в mutate

df2 %>% 
    group_by(a1) %>% 
    mutate(b2=as.Date(b2, format = "%d.%m.%Y")) 
# a1   b2 c3 d3 
# (chr)  (date) (chr) (int) 
#1  a 2015-01-01 1a  1 
#2  a 2015-02-02 2b  2 
#3  b 2012-02-14 3c  3 
#4  b 2008-08-16 4d  4 
#5  c 2003-06-17 5e  5 
#6  d 2015-01-31 6f  6 
#7  e 2022-01-07 7g  7 
#8  e 2001-05-09 8h  8 

Если нам нужно сделать только преобразование, не нужно группе «a1».

mutate(df2, b2= as.Date(b2, format= "%d.%m.%Y") 

С помощью %<>% оператора из magrittr, мы можем превратить в место.

df2 %<>% 
    mutate(b2= as.Date(b2, format= "%d.%m.%Y") 
+0

Это работает, да. Однако, я не понимаю, почему мой подход не работает ?! – Stophface

+0

@Chrissl В среде 'dplyr' мы используем либо' mutate/transformute' для изменения/создания нового столбца, либо 'summaryize', чтобы получить итоговый вывод для каждой группы. – akrun

+0

ОК. Каково особое преимущество использования пакета dplyr здесь. Это больше печатает, и делает то же самое ?! – Stophface

 Смежные вопросы

  • Нет связанных вопросов^_^