全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
2900 4
2018-01-03
PACK.DESCdatevalue.ttl
KEPPRA TAB FLM CTD 500MG 30

201709

38097770

DEPAKINE TAB RTD FC 500MG 30

201701

23528110

LEVETIRACETAM TAB 500MG 30

201601

10726.05

CARBAMAZEPINE TAB 100MG 100

201505

10703.4

PHENOBARBITAL SOD VIAL IM 100MG 1ML

201506

10700.59



我想在当前数据最后新加一列为这行产品最近三个月的销量总和,在第一行增加列的数字为PACK.DESC为PKEPPRA TAB FLM CTD 500MG 30这个产品,date为201707-201709的所有value.seg的数值相加,请问要怎么操作?

date<-unique(full$date)
date<-sort(date)
rank<-c(1:length(date))
datepara<-data.frame(date,rank)

full<-merge(full,datepara,by.x="date",by.y="date",all.x = T)

full$R3M.ttl<-0
for (i in 2:max(full$rank)) {
  for (j in i-2:i) {full$R3M.ttl[full$rank==i]<-full$R3M.ttl[full$rank==i]+full$value.ttl[full$rank==j]}
}


上面是我写的代码,但是报错了:
Error in full$R3M.ttl[full$rank == i] <- full$R3M.ttl[full$rank == i] +  :
  replacement has length zero

而且这个写法无法对应到每个产品。

有没有好心人可以帮忙看一下呀~
二维码

扫码加我 拉你入群

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

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

全部回复
2018-1-3 14:48:36
我有朋友帮忙看了一下 他的做法是长表转宽表 但是感觉那样效率太低啦
二维码

扫码加我 拉你入群

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

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

2018-1-3 22:31:39
dplyr包中的group_by(), filter(), summarise()等组合起来,应该就可以算了。
二维码

扫码加我 拉你入群

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

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

2018-1-4 10:19:35
cheetahfly 发表于 2018-1-3 22:31
dplyr包中的group_by(), filter(), summarise()等组合起来,应该就可以算了。
谢谢!我去学习一下~
二维码

扫码加我 拉你入群

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

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

2018-1-18 16:02:15
这个问题描述看不懂
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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