r - 如何根据另一个数据框中的值摘要在 R 中填充数据框?
问题描述
我有一个充满类别的数据框,每个类别都有一个相关的 p 值。我想创建一个包含两列的新数据框:
- 一系列 pvalue
- 第一个数据帧中 pvalue 低于该阈值的类别数
所以,理想情况下是这样的:
|pVal |SigCats|
|-----|-------|
|0.05 | 100 |
|0.01 | 80 |
|0.001| 50 |
如何生成此数据框?
这是一个示例数据集:
set.seed(42)
n = 20
sourceDat <- data.frame(id=1:n,
group=rep(LETTERS[1:2], n/2),
p_value=sample(1:10, n, replace=TRUE)/500)
我知道我可以通过以下方式计算符合特定标准的类别数量:
sum(sourceDat$p_value < 0.01) #for categories with pvalues less than 0.01
但我不知道如何使用这个函数来填充数据框。我在下面的尝试给了我一个错误......
pVals <- c(0.05,10^seq(from = -2, to = -20,by= -1))
pValDat <- data.frame(x=pVals)
pValDat <- pValDat %>%
dplyr::mutate(sigCats = sum(sourceDat$p_value < x))
我最熟悉base R和tidyverse
解决方案
我使用 dplyr 的 rowwise 函数解决了这个问题:
pValDat <- data.frame(x=10^seq(from = -2, to = -20,by= -1))
pValDat %>%
rowwise %>%
mutate(sigCats = sum((sourceDat$pvalue < x)))
推荐阅读
- javascript - Azure 应用服务 - Nodejs ES 模块错误
- python - python 3 可以用作“ActiveX 脚本主机”的脚本引擎吗?
- powershell - 使用 Powershell 更改用户文件夹(Shell 文件夹)的路径
- python-3.x - 无法在 macOS Big Sur 上的 python3.9 上安装 geopandas
- git - Git合并 - 更新功能和主
- java - Android 手机信号塔值始终为 2147483647
- php - WooCommerce 在父类别中排除子类别中的产品
- python - 具有来自测试仓库的要求的 Python 模块
- docker - Docker 运行命令 - 为什么“docker run echo 'foo'”有效,但 /bin/sh -c echo 'foo' 无效?它们应该是等价的
- install4j - install4j URL 处理程序总是启动新实例