楼主: nieqiang110
1279 5

[问答] 剔除本行之后的分组均值 [推广有奖]

已卖:5515份资源

学术权威

60%

还不是VIP/贵宾

-

威望
0
论坛币
96339 个
通用积分
808.2180
学术水平
293 点
热心指数
351 点
信用等级
207 点
经验
5980 点
帖子
4801
精华
0
在线时间
5993 小时
注册时间
2007-7-26
最后登录
2025-12-3

楼主
nieqiang110 学生认证  发表于 2022-8-25 12:57:39 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
各位老师好,
求助,我有数据框data<-data.frame(ID=1:12,Group=rep(A:C,each=4),Num=100:112)。其中,ID为识别变量,Group为分组,Num为数值变量。请教老师,如何用R语言计算出Num剔除本行之后的按照Group分组的均值Mean。我的问题是,每一行都会对应一个均值。谢谢。尘埃落定
二维码

扫码加我 拉你入群

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

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

关键词:Data 数据框

回帖推荐

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

也没想到好方法,笨着来:

llb_321 发表于4楼  查看完整内容

如果数据量大,第二种方法可能快些

本帖被以下文库推荐

沙发
nieqiang110 学生认证  发表于 2022-8-25 12:59:51
一些回归中,工具变量就是这么找出来的

藤椅
llb_321 在职认证  发表于 2022-8-25 15:34:38
也没想到好方法,笨着来:
  1. df <- data.frame(ID = 1:12,
  2.                  Group = rep(LETTERS[1:3], each = 4),
  3.                  Num = 101:112)
  4. #方法一
  5. res1 <- NULL
  6. for (i in 1:dim(df)[1]) {
  7.   res1[i] <-
  8.     mean(df[which(df[, "Group"] == df[i, "Group"] &
  9.                     row.names(df) != i), "Num"])
  10. }
  11. #方法二
  12. library(dplyr)
  13. a <- df %>% group_by(Group) %>% summarise(avrg = mean(Num), nct = n())
  14. tmp <- df %>% left_join(a, by = "Group")
  15. res2 <- (tmp[, 5] * tmp[, 4] - tmp[, 3]) / (tmp[, 5] - 1)
  16. #验证
  17. near(res1, res2)
  18. mean(df[c(1, 3, 4), 3])
  19. #合并结果
  20. cbind(df, res1)
复制代码

已有 1 人评分论坛币 收起 理由
cheetahfly + 10 热心帮助其他会员

总评分: 论坛币 + 10   查看全部评分

板凳
llb_321 在职认证  发表于 2022-8-25 15:36:02
如果数据量大,第二种方法可能快些

报纸
nieqiang110 学生认证  发表于 2022-8-25 16:06:04
llb_321 发表于 2022-8-25 15:36
如果数据量大,第二种方法可能快些
感谢lib_321老师的热心帮助

地板
llb_321 在职认证  发表于 2022-8-27 18:45:47
nieqiang110 发表于 2022-8-25 16:06
感谢lib_321老师的热心帮助
相互交流,不用客气啦

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-6 02:47