Наскоро научих за тръбния оператор%>% и се опитвам да се включа в някои от проектите, по които работя. Въпреки това получавам грешка, когато се опитвам да използвам as.Date в тръбата.
пример
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
Обикновено това, което използвам е:
df$dates <- as.Date(df$dates, "%m/%d/%Y")
Когато се опитвах да го използвам в тръба, опитах:
df %>%
as.Date(dates, "%m/%d/%Y")
Но получите съобщение за грешка:
Error in as.Date.default(., dates, "%m/%d/%Y") :
do not know how to convert "." to class “Date”
Все още не съм супер запознат с тръбните оператори, така че е много вероятно as.Date да не е команда, която бихте използвали в тръба.
Благодаря предварително за всякакви мисли или предложения!
Отговори:
5 за отговор № 1Мисля, че трябва да добавите мутиране към тръбния оператор. Обаче не знам дали в този случай тръбопроводният оператор е по-добър от просто 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 за отговор № 2
В този случай искате да използвате %$%
оператор, който ви дава достъп до колони директно:
df %$% as.Date(dates, "%m/%d/%Y")
# [1] "2017-04-13" "2017-02-20" "2017-03-05" "2017-04-14" "2017-10-22"
Той е подобен на следния синтаксис with
:
with(df,as.Date(dates, "%m/%d/%Y"))