2017-06-30 7 views
0

Ich habe vor kurzem etwas über den Rohrleitungsoperator%>% gelernt und versuche, mich in einige der Projekte einzuarbeiten, an denen ich gearbeitet habe. Ich erhalte einen Fehler, wenn ich versuche, asDate in der Pipe zu verwenden.R Fehler bei der Verwendung von asDate in einem%>%

Beispiel

numbers <- c(1, 2, 3, 4, 5) 
dates <- c("4/13/2017", "2/20/2017", "3/5/2017", "4/14/2017", "10/22/2017") 
df <- data.frame(numbers, dates) 
    numbers  dates 
1  1 4/13/2017 
2  2 2/20/2017 
3  3 3/5/2017 
4  4 4/14/2017 
5  5 10/22/2017 

Normalerweise, was ich ist verwenden würde:

df$dates <- as.Date(df$dates, "%m/%d/%Y") 

Wenn es in einem Rohr zu verwenden versuchen, habe ich versucht: einen Fehler

df %>% 
    as.Date(dates, "%m/%d/%Y") 

Aber erhalten Nachricht:

Error in as.Date.default(., dates, "%m/%d/%Y") : 
    do not know how to convert '.' to class “Date” 

Ich bin noch nicht sehr vertraut mit Piping-Operatoren, so dass es sehr wahrscheinlich ist, dass as.Date nicht ein Befehl wäre, den Sie in einer Pipe verwenden würden.

Vielen Dank im Voraus für irgendwelche Gedanken oder Anregungen!

Antwort

5

Ich denke, Sie müssen muate zum Rohrleitungsbetreiber hinzufügen. Aber ich weiß nicht, ob in diesem Fall Rohr Betreiber ist besser als nur einfache df$dates <- as.Date(df$dates, "%m/%d/%Y")

library(dplyr) 

numbers <- c(1, 2, 3, 4, 5) 
dates <- c("4/13/2017", "2/20/2017", "3/5/2017", "4/14/2017", "10/22/2017") 
df <- data.frame(numbers, dates) 

df %>% 
    mutate(dates=as.Date(dates, "%m/%d/%Y")) 
+0

das funktionierte, danke! Sie haben Recht, dass der Rohrleitungsbetreiber für dieses Beispiel nicht besser ist. Das Projekt, an dem ich gerade arbeite, verwende ich aber mehr als nur das as.Date in der Pipe. – Joe

0

In diesem Fall können Sie die %$% Operator verwenden möchten, die Sie direkten Zugriff auf die Spalten gibt:

df %$% as.Date(dates, "%m/%d/%Y") 
# [1] "2017-04-13" "2017-02-20" "2017-03-05" "2017-04-14" "2017-10-22" 

Es ist ähnlich wie die folgende Syntax verwendet with:

with(df,as.Date(dates, "%m/%d/%Y")) 
Verwandte Themen