楼主: 千车麦穗
2839 5

[学习分享] 分组统计遇上缺失值NA [推广有奖]

  • 5关注
  • 0粉丝

已卖:1份资源

博士生

0%

还不是VIP/贵宾

-

威望
0
论坛币
89 个
通用积分
6.7270
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1864 点
帖子
84
精华
0
在线时间
292 小时
注册时间
2019-4-22
最后登录
2025-10-22

楼主
千车麦穗 发表于 2019-11-21 23:24:26 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
各位老师好,我想分组求一下a和b列的和及非空值的个数,为什么出现的结果是错误的呢,请问是哪里出问题了呢,谢谢大家
  1. df<-data.frame(a=c(1,2,NA,5,6,NA), b=c(1.53,2.45,3.11,NA,4.54,2.45),
  2.                c=c("a","a","c","c","b","b"),
  3.                d=c("aa","aa","bb","bb","cc","cc"))
  4.               
  5. df
  6. df%>%group_by(c,d)%>% summarise_each(funs(sum(na.rm = T),'N'=sum(complete.cases=T)),b)
复制代码
360截图16530716344463.png
二维码

扫码加我 拉你入群

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

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


本帖被以下文库推荐

沙发
cheetahfly 在职认证  发表于 2019-11-22 22:32:54
df %>% group_by(c,d) %>% summarise_all(sum, na.rm = T)
df %>% group_by(c,d) %>% summarise_all(function(x) sum(!is.na(x)))

藤椅
千车麦穗 发表于 2019-11-25 14:39:47
cheetahfly 发表于 2019-11-22 22:32
df %>% group_by(c,d) %>% summarise_all(sum, na.rm = T)
df %>% group_by(c,d) %>% summarise_all(funct ...
谢谢老师,但是能把代码合到一起吗?我试了下没成功

板凳
cheetahfly 在职认证  发表于 2019-11-26 08:04:28
df %>%
  group_by(c,d) %>%
  summarise_all(sum, na.rm = T)  %>%
  left_join(df %>%
                 group_by(c,d) %>%
                 summarise_all(function(x) sum(!is.na(x))),
               by = c("c", "d"))
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
Sunknownay + 3 + 3 + 3 热心帮助其他会员

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

报纸
zhou1_20 发表于 2019-11-26 22:01:32
再提供一种方法,参考下

library(tidyverse)
library(rlist)

df %>%
  group_by(c,d) %>%
  nest() %>%
  mutate(dt = list.apply(data,
    function(x) {
      data.frame(
      a_non= sum(!is.na(x$a)),
      a_sum = sum(x$a, na.rm = T),
      b_non= sum(!is.na(x$b)),
      b_sum = sum(x$b, na.rm = T)
    )}
  ))%>%
  select(c,d,dt)%>%
  unnest(cols = c(dt))

地板
千车麦穗 发表于 2019-11-27 08:12:58
嗯嗯,棒极了,谢谢两位老师,我也找到了一种:with(df,aggregate(df[,c('a','b')], by=list(Vc=c,Vd=d),
                  FUN=function(x){c(sum=sum(x,na.rm=T),N=sum(!is.na(x)))}))

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-2-7 20:33