r - dplyr 计算涉及数据框的两列 (R)
问题描述
我对 R 很陌生,在广泛搜索网络后找不到明确的答案。我正在尝试让 dplyr 函数执行以下任务:
我有以下data.frame作为tibble:以开头的列X.
表示不同的样本,行表示特定基因的表达量。
head(immgen_dat)
# A tibble: 6 x 212
ProbeSetID GeneName Description X.proB_CLP_BM. X.proB_CLP_FL. X.proB_FrA_BM. X.proB_FrA_FL. X.proB_FrBC_BM.
<int> <fct> <fct> <dbl> <dbl> <dbl> <dbl> <dbl>
1 10344620 " Gm1056~ " predicted gene 1~ 15.6 15.3 17.2 16.1 18.1
2 10344622 " Gm1056~ " predicted gene 1~ 240. 255. 224. 312. 272.
3 10344624 " Lypla1" " lysophospholipas~ 421. 474. 349. 478. 459.
4 10344633 " Tcea1" " transcription el~ 802. 950. 864. 968. 1056.
5 10344637 " Atp6v1~ " ATPase H+ transp~ 199. 262. 167. 267. 255.
6 10344653 " Oprk1" " opioid receptor ~ 14.8 12.8 18.0 13.2 15.3
# ... with 204 more variables: X.proB_FrBC_FL. <dbl>,
我使用以下代码在每个基因的末尾添加了一个平均表达变量(变量范围是第一个和最后一个样本):
immgen_avg <- immgen_dat %>%
rowwise() %>%
mutate(Average = mean(X.proB_CLP_BM.:X.MLP_FL.))
在这里,我有一个简单的问题:mean
我从这段代码中得到的返回值与我在其他地方(在 Excel 中)计算的平均值不匹配。我认为没有任何缺失值。
我想做的是:对于每个基因,我想将样本值与平均值进行比较并计算 log2 倍差异(样本中基因表达与平均表达值相比的 log2 差异所有样本)。我想以 的名称存储此数据框immgen_log2
并进行一些后续分析。在这个新数据框中,我想保留基因名称,因为我正在考虑将其与另一个数据表合并以比较不同实验之间的 log2 变化。
这样做的最佳方法是什么?我很感激你的回答。
解决方案
我将在短时间内解释发生了什么,但解决预期变量的行均值的一种方法是:
immgen_dat %>%
mutate(Average = apply(.[, 4:8], 1, mean)) %>%
select(Average)
# Average
# 1 16.46
# 2 260.60
# 3 436.20
# 4 928.00
# 5 230.00
# 6 14.82
要查看您的代码发生了什么,我们可以使用do
如下函数:
df2 <- immgen_dat %>%
rowwise() %>%
do(Average = .$X.proB_CLP_BM.:.$X.proB_FrBC_BM.)
df2$Average[1]
# [[1]]
# [1] 15.6 16.6 17.6
您将看到:
从 15.6 开始以 1 为步长生成一个序列。您可以通过键入 来更详细地了解这一点help(":")
。所以在
immgen_dat %>%
rowwise() %>%
mutate(Average = mean(X.proB_CLP_BM.:X.proB_FrBC_BM.))
您正在计算这些序列的值的平均值。
编辑
比率的对数当然是对数的差(假设分母非零)。因此,您试图从 的 log2 中找到每个其他数值变量的 log2 之间的差异Average
,您可以执行类似的操作。
immgen_log2 <- immgen_dat
immgen_log2[,4:9] <- log(immgen_dat[,4:9])
immgen_log2[,4:8] <- sapply(immgen_log2[,4:8], func)
推荐阅读
- python - 如何使用 EMR 集群增加 Spark 应用程序运行容器的数量?
- javascript - jQuery:获取html元素的正常JS格式
- asp.net-mvc - CLRThreadPoolQueue 中的大部分请求
- mysql - #2006 - MySQL 服务器已消失/仅在某些数据库中
- nestjs - NestJS 处理服务异常
- react-native - 刷新路线 - 仅在显示屏幕时渲染屏幕(已修复)
- java - 如何根据变量延迟 Spring Bean 初始化
- python-3.x - 在 Python 中使用索引和标签迭代列表
- python - 如何在保持顺序的同时重塑数组?
- c++ - 带指针的结构的间接原子交换