全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
2572 2
2017-06-19
悬赏 50 个论坛币 已解决
> Rquestion
   Fvalue Tvalue Wvalue   Dvalue Result
1   Name4  Name1   0.45 2017/6/1   0.90
2   Name4  Name1   0.45 2017/6/1   0.90
3   Name6  Name2   0.41 2017/6/1   0.41
4   Name2  Name3   0.51 2017/6/2   0.51
5   Name5  Name3   0.32 2017/6/3   0.32
6   Name4  Name1   0.29 2017/6/3   0.29
7   Name3  Name4   0.15 2017/6/4   0.30
8   Name5  Name4   0.36 2017/6/5   0.36
9   Name3  Name4   0.21 2017/6/5   0.21
10  Name2  Name5   0.32 2017/6/6   0.32
11  Name1  Name6   0.99 2017/6/6   0.99
12  Name4  Name6   0.38 2017/6/6   0.38
13  Name3  Name4   0.15 2017/6/4   0.30


######################################
最近在做一个分析,有个技术性问题难到我了。如果是用VBA做的话,我会,但是数据量大,很慢。最近刚入手R,很多操作不太懂。


现在有一个数据框Rquestion,里面有4列数据,第5列Result是我想要的结果。

要求是这样的(不用加载包,仅使用基础包):

对当天的交易记录,如果是同一组有重复的交易记录,则对其第3列进行求和,结果统一赋值到第5列;否则,令第5列的值=第3列的值。

例如:2017/06/01当天, Name4,Name1是同一组交易记录(注意Name4,Name1和Name1,Name4是不同的组),对第3列的值求和(=0.45+0.45),结果放在第5列。

又如:2017/06/04,Name3,Name4出现了2次,对其第3列求和(=0.15+0.15),结果为0.30,将结果0.30赋值于他们的第5列。

#########################################
不知道我表达清楚了没?

我是这么想的(伪代码),不太会,呵呵:

ind<-(Rquestion$DValue=="2017/6/1") & (Fvalue属性拼Tvalue属性唯一);
Rquestion$Result<-sum(Rquestion[ind,3]);




最佳答案

cheetahfly 查看完整内容

这个问题正好适用大神Hadley Wickham提出来的Split-Apply-Combine策略: 至于该策略的具体思想,请上网搜索“Split-Apply-Combine”
二维码

扫码加我 拉你入群

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

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

全部回复
2017-6-19 17:22:30
这个问题正好适用大神Hadley Wickham提出来的Split-Apply-Combine策略
复制代码
至于该策略的具体思想,请上网搜索“Split-Apply-Combine
二维码

扫码加我 拉你入群

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

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

2017-6-20 13:34:33
如果最后不保留重复值的话,可以采用如下的方法来计算:就是一个简单的分组求和问题,用tapply或者aggregate函数都能解决。
直接用aggregate来进行计算即可:
复制代码


二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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