R语言如何统计逻辑向量中TRUE值的个数
解决方法
直接统计现有结果中TRUE的数量
R中逻辑值TRUE默认对应数值1,FALSE对应数值0,你直接对income2列求和即可得到符合条件的家庭总数,代码如下:
# 假设你已将现有运行结果存储在res变量中 sum(res$income2) # 也可以直接在原有代码末尾追加计算逻辑 pasta %>% filter(AREA=="2") %>% group_by(HHID) %>% summarise(buy2= sum(PASTA), INCOME) %>% summarise(income2 = INCOME > 20000 & buy2 > 30) %>% pull(income2) %>% sum()
更简洁的优化代码
你原有代码存在几个可调整的点,可以直接一步得到最终结果,还能消除summarise()的分组提示:
- 数值比较不需要加双引号,避免将数值转为字符串比较出错
- 同一个家庭ID(HHID)对应的收入是固定值,summarise时明确取唯一值即可
- 无需生成逻辑列,直接过滤符合条件的行再统计行数即可
pasta %>% filter(AREA == "2") %>% # 先筛选2区的记录 group_by(HHID) %>% # 按家庭ID分组 summarise( total_pasta = sum(PASTA), # 统计该家庭累计购买意面量 income = first(INCOME), # 取该家庭的收入值 .groups = "drop" # 统计完成后取消分组,消除提示 ) %>% filter(income > 20000, total_pasta > 30) %>% # 筛选收入超2万、意面购买超30单位的家庭 nrow() # 直接返回符合条件的家庭总数
内容的提问来源于stack exchange,提问作者redgoose
相关产品推荐
相关产品推荐

