2015-10-29 64 views
1

我的數據框在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") 

錯誤DF $ B2:類型的對象 '關閉' 不subsettable

第一:爲什麼自從我(爲了我的理解)做同樣的事情之後,我會得到兩條不同的錯誤消息?

其次,爲什麼不能將我的列轉換爲日期?

我可能應該補充一點,我知道使用mutate將列更改爲date格式。但我想知道爲什麼我的方法不起作用。

+0

此言爲貴「第一」:你似乎沒有data.frame稱爲'df'但一個叫'df2' – Cath

+0

'df'是一個函數。你可能是指'df2'。所以,你的問題的答案是:錯字。 –

+1

@CathG哦,親愛的...... – 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/transmute'來改變/創建一個新列或'summarise'來獲得每個組的彙總輸出。 – akrun

+0

好的。這裏使用dplyr包的特別優勢是什麼?這是更多的打字,並做同樣的事情?! – Stophface