2017-08-12 78 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"))))) 
相关问题