全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
4880 8
2014-12-23
刚才在sas区看到有一个小问题,蛮有意思,看着sas代码好晦涩,特发帖到R里看看大家怎么处理,是这样的,数据集里有两个变量:a和b
a是一个0,1变量,现在希望求:所有a=1时相应b在这个位置的值与后5个的B的和。

模拟数据代码如下
ex<-data.frame(a=round(runif(100),0),b=runif(100))
例如第二行的a等于1,那么求第二行的b的值以及其后面五行b的值之和。
二维码

扫码加我 拉你入群

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

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

全部回复
2014-12-23 12:28:47
第一种方法用,循环,简单
复制代码

第二种方法,矩阵,高效
建立一个0,1矩阵,从而计算每一行b值及后5行b值之和,挑选a=1的所有行。
ps:这类型0,1矩阵生成感觉比较麻烦,可以直接生成5个伪向量,粗暴好用
复制代码
第一种方法实现5.82秒,第二种方法实现0.50秒
二维码

扫码加我 拉你入群

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

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

2014-12-23 21:56:32
或者:

复制代码
二维码

扫码加我 拉你入群

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

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

2014-12-24 09:43:23
水天一色DIY 发表于 2014-12-23 12:28
第一种方法用,循环,简单

第二种方法,矩阵,高效
第二种方法和sas的思路比较像
二维码

扫码加我 拉你入群

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

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

2014-12-24 10:15:55
qoiqpwqr 发表于 2014-12-23 21:56
或者:
恩,这种方法有想过,但是如上面的第一种方法一样,还是遇到sum(b[i:(i+5)])溢出问题
二维码

扫码加我 拉你入群

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

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

2014-12-24 10:41:24
水天一色DIY 发表于 2014-12-24 10:15
恩,这种方法有想过,但是如上面的第一种方法一样,还是遇到sum(b)溢出问题
你可以试试
复制代码
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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