楼主: kamaduoluo
524 9

[实际应用] 请教各位老师关于均值 [推广有奖]

  • 2关注
  • 0粉丝

本科生

73%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
1532 点
帖子
64
精华
0
在线时间
105 小时
注册时间
2015-2-15
最后登录
2022-3-15

5论坛币
微信图片_20200301194722.png
想求出第三行与第二行的均值,第四行与第三行的均值,以此类推。
其中cons_no有很多,还需要进行分组计算。

最佳答案

不懂不装懂 查看完整内容

library(dplyr) dat% group_by(x)%>% transmute(z=(lag(y)+y)/2) 结果 # A tibble: 10 x 2 # Groups: x [2] x z 1 A NA 2 A 2 3 A 4 4 A 3.5 5 A 2 6 B NA 7 B 4 8 B 5.5 9 B 4 10 B 2

回帖推荐

caozhaowen 发表于6楼  查看完整内容

无for循环的代码:

caozhaowen 发表于3楼  查看完整内容

要进行什么分组计算?算哪个变量?是不是算en的平均?下面参考:

不懂不装懂 发表于2楼  查看完整内容

library(dplyr) dat% group_by(x)%>% transmute(z=(lag(y)+y)/2) 结果 # A tibble: 10 x 2 # Groups: x [2] x z 1 A NA 2 A 2 3 A 4 4 A 3.5 5 A 2 6 B NA 7 B 4 8 B 5.5 9 B 4 10 B 2
library(dplyr)
dat<-data.frame(x=c(rep("A",5),rep("B",5)),
                y=c(1, 3, 5, 2, 2,2,6,5,3,1))
dat%>%
  group_by(x)%>%
  transmute(z=(lag(y)+y)/2)
结果
# A tibble: 10 x 2
# Groups:   x [2]
   x         z
   <fct> <dbl>
1 A      NA  
2 A       2  
3 A       4  
4 A       3.5
5 A       2  
6 B      NA  
7 B       4  
8 B       5.5
9 B       4  
10 B       2  
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
Sunknownay + 2 + 2 + 2 热心帮助其他会员

总评分: 学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

使用道具

藤椅
caozhaowen 在职认证  发表于 2020-3-2 13:49:45 |只看作者 |坛友微信交流群
要进行什么分组计算?算哪个变量?是不是算en的平均?下面参考:
  1. library(dplyr)
  2. cons_no=c(rep(4000,100),rep(5001,100))
  3. en=rnorm(100,14,2)
  4. df=data.frame(cons_no,en,row_cat=1:100)
  5. for (i in seq(1,NROW(df),by=2)){
  6.   if((i+1)<=NROW(df))df$row_cat[i+1]=df$row_cat[i]
  7. }
  8. output=df %>% group_by(cons_no,row_cat) %>% summarise(mean_en=mean(en))
复制代码

使用道具

library(dplyr)
dataname%>%
  group_by(cons_no)%>%
  transmute(z=(lag(en)+en)/2)

使用道具

报纸
caozhaowen 在职认证  发表于 2020-3-4 16:21:58 |只看作者 |坛友微信交流群
不懂不装懂 发表于 2020-3-4 15:41
library(dplyr)
dataname%>%
  group_by(cons_no)%>%
最后一句得不到结果吧?

使用道具

地板
caozhaowen 在职认证  发表于 2020-3-4 16:42:17 |只看作者 |坛友微信交流群
无for循环的代码:
  1. library(dplyr)
  2. cons_no=c(rep(4000,100),rep(5001,100))
  3. en=rnorm(200,14,2)
  4. df=data.frame(cons_no,en,row_cat=1:200)
  5. df$cat=df$row_cat+(df$row_cat%%2)
  6. df %>% group_by(cons_no,cat) %>% summarise(mean_en=mean(en))
复制代码

使用道具

7
skyfx 发表于 2020-3-4 20:14:26 |只看作者 |坛友微信交流群
第一个问题可用rollmean;
第二个问题用group_by;

使用道具

8
不懂不装懂 发表于 2020-3-4 20:45:57 |只看作者 |坛友微信交流群
skyfx 发表于 2020-3-4 20:14
第一个问题可用rollmean;
第二个问题用group_by;
楼主的意思是先分组,在求均值,你这个好像不能一起用

使用道具

9
caozhaowen 在职认证  发表于 2020-3-5 00:25:29 |只看作者 |坛友微信交流群
不懂不装懂 发表于 2020-3-4 20:45
楼主的意思是先分组,在求均值,你这个好像不能一起用
仔细看了他意思,的确你说的是对的。我理解错了。我还以为他要求1和2行的均值 ,然后求3和4行的均值。以此类推。他不是求这个,那简单了。

使用道具

10
kamaduoluo 发表于 2020-3-5 23:52:04 |只看作者 |坛友微信交流群
感谢各位老师

使用道具

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

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

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

GMT+8, 2024-5-21 23:06