2017-08-12 68 views
0

Why do I get "warning longer object length is not a multiple of shorter object length"?爲什麼這些對象大小不同的 - R的

原諒我再次問這個,但我無法弄清楚,爲什麼我收到此錯誤信息 - 甚至可以通過計算器梳理後。從上面的鏈接它說:

「memb只有長度爲10.我猜dih_y2 $ MemberID的長度不是10的倍數。當使用==它會吐出警告,如果它不是一個讓你知道它可能沒有達到你期望的效果的倍數。「

我正在從下面的代碼中得到同樣的錯誤信息,但我不確定在我的示例中有哪些「對象」長度不同,以及如何解決這個問題!本質上,我試圖將我的日期分成幾個月進行分析。如果可以的話請幫忙。謝謝。

library(ggplot2) 
library(dplyr) 
library(statsr) 

piccolos2 <- piccolos2 %>% 
    mutate(SERPDate = as.Date(piccolosRankings$SERPDate, format='%m/%d/%Y')) 

piccolos2 <- piccolos2 %>% 
    mutate(Month = ifelse(as.numeric(SERPDate) %in% 0017-04-01:0017-04-30, "April", 
      ifelse(as.numeric(SERPDate) %in% 0017-05-01:0017-05-31, "May", 
      ifelse(as.numeric(SERPDate) %in% 0017-06-01:0017-06-30, "June", 
      ifelse(as.numeric(SERPDate) %in% 0017-07-01:0017-07-31, "July", "August"))))) 
+1

你意識到了嗎'0017-04-01:0017-04-30'不是日期的順序?其他人也一樣。在命令行嘗試它。 –

+1

在表達式'0017-04-01:0017-04-30'中,操作符':'優先。然後是減法。總之,它評估序列爲'[1] -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38'。爲了製作日期,你必須在':'的每一側引用表達式,然後使用'as.Date','asOSPctct'或者'lubridate'軟件包。 –

+0

使用'case_when'而不是嵌入的'ifelse' –

回答

0
piccolos2 <- piccolos2 %>% 
    mutate(Month = ifelse(as.numeric(SERPDate) %in% as.Date("0017-04-01"):as.Date("0017-04-30"), "April", 
      ifelse(as.numeric(SERPDate) %in% as.Date("0017-05-01"):as.Date("0017-05-31"), "May", 
      ifelse(as.numeric(SERPDate) %in% as.Date("0017-06-01"):as.Date("0017-06-30"), "June", 
      ifelse(as.numeric(SERPDate) %in% as.Date("0017-07-01"):as.Date("0017-07-31"), "July", "August")))))