楼主: 布鲁斯警探
2491 4

[问答] 如何选择特定数据批量跨行相加? [推广有奖]

  • 0关注
  • 0粉丝

初中生

95%

还不是VIP/贵宾

-

威望
0
论坛币
15 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
59 点
帖子
4
精华
0
在线时间
37 小时
注册时间
2016-7-14
最后登录
2023-4-23

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
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

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

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

扫码加我 拉你入群

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

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


我有朋友帮忙看了一下 他的做法是长表转宽表 但是感觉那样效率太低啦

使用道具

藤椅
cheetahfly 在职认证  发表于 2018-1-3 22:31:39 |只看作者 |坛友微信交流群
dplyr包中的group_by(), filter(), summarise()等组合起来,应该就可以算了。

使用道具

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

使用道具

报纸
xing035400 在职认证  发表于 2018-1-18 16:02:15 |只看作者 |坛友微信交流群
这个问题描述看不懂

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-27 07:31