r - 如何在 R 中按两列分组,但第二个是 if 语句?
问题描述
我在互联网上找不到任何帮助。我在 .sav 文件中有 3 个 cols 加载到 R studio。
是M with values 1,2,3,4,5,6,7
和label: weight
, 并且 N with values 1,2,3
和label diet
.
我想按这些列对其进行分组,但对于N
col 我只想选择值为 1 的那些。此外,我还有最后一列带有年龄数据A
。
我写了这个:
library(dplyr)
df%>%
group_by(M, N) %>%
summarize(values = mean(A, na.rm = TRUE))
我得到了分组,但对于所有 N. 我尝试了这样的事情:
library(dplyr)
df%>%
group_by(M, N == 1) %>%
summarize(values = mean(A, na.rm = TRUE))
但是我再次从 N 和 NA 等中获得了所有类别的组。
预期:我只想要 group_by by M - 所有值,以及 value = 1 的 N。
那组应该怎么看?
解决方案
我们可以按“M”和summarise
过滤后的“A”进行分组
library(dplyr)
df %>%
group_by(M) %>%
summarise(values = mean(A[N == 1], na.rm = TRUE))
或者另一种选择是filter
介于两者之间,但这也会删除没有“N”的组为 1
df %>%
filter(N == 1) %>%
group_by(M) %>%
summarise(values = mean(A, na.rm = TRUE))
推荐阅读
- php - 使用数据库查询插入记录(Laravel)
- python - 为什么 xlrd 不能将 99 以上的数字输入到 dict 中?
- azure-devops - Azure Devops,单行文本字符限制?
- javascript - JavaScript 错误,缺少 ``)`` 但是当它被添加时 ``Unexpected end of input``?- 需要帮助
- pandas - 如何重置熊猫数据阅读器索引?
- tsql - 尝试操作字符串,例如 if '26169;#c785643',那么结果应该类似于 'c785643'
- node.js - socket.on 内的 socket.emit 在客户端 Socket.io 上不起作用
- ms-word - 将 PowerPoint 笔记窗格复制到 Word 会导致字体大小不一致
- mongodb - MongoDB 聚合框架通过 id 加入两个多面集合
- java - 将 Quarkus 应用于非 maven、非 gradle Java 项目