全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
2317 3
2017-07-03
for(i in 3:length(date)+1) {

  month_i<-as.numeric(month(date[i]))
  if(month_i==3) diffmonth[i]<-sumtotal[i-1]
  else diffmonth[i]<-sumtotal[i-1]-sumtotal[i-2]

}

我这里date是一个储存了日期的向量,讯婚礼要做的就是,判断datep[i]月份是不是为3,如果是3的话,diffmonth[i-1]采取不同的赋值。但程序总是报错:
Error in if (month_i == 3) { : missing value where TRUE/FALSE needed

比如
> date
[1] "2015-12-31" "2016-02-29" "2016-03-31" "2016-04-30" "2016-05-31" "2016-06-30" "2016-07-31" "2016-08-31" "2016-09-30"
[10] "2016-10-31" "2016-11-30" "2016-12-31" "2017-02-28" "2017-03-31" "2017-04-30" "2017-05-31"

> diffmonth
[1] 2046.312 2917.064       NA 1340.971 1537.071 2082.445 2305.795 1665.273 1755.292 1994.158 1956.122 2172.993 2979.521
[14] 2373.737 1408.300 1745.548

为什么2017-03对应的计算就正常,而第三个元素2016-03就是NA呢?

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2017-7-3 09:21:16
真心求教!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-7-3 09:46:52
month(date[i]) 哪有month这个函数(如果你用了相关包,那么去查相关包的手册),正确的拼写 months()
比较好的做法
1,你的date是日期格式的,那么用format(date[i],"%m"),再转成数字
2,不清楚date是日期还是字符串,那么用substr(date[i],6,7),再转成数字
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-7-4 07:57:29
3:length(date)+1这一句你应该是想要3:(length(date)+1),否则,i是从4开始循环的,diffmonth[3]自然没有结果。
另外当i为length(date)+1时,date[i]为NA,month_i同样为NA,所以会报错:Error in if (month_i == 3) { : missing value where TRUE/FALSE needed
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群