我对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
值没有't match the average I calculated elsewhere (in Excel). I don' t认为有任何缺失值 .
我希望将样本值与平均值进行比较,并计算log2倍差异(样本中基因表达的log2差异与所有样本的平均表达值相比) . 我想存储名为 immgen_log2
的数据帧并进行一些后续分析 . 在这个新的数据框架中,我想将这个与另一个数据表合并,以比较不同实验之间的log2变化 .
这样做的最佳方式是什么?我感谢你的回答 .
2 回答
我将在短时间内解释发生的事情,但解决预期变量的行方法的一种方法是:
要查看代码发生了什么,我们可以使用
do
函数,如下所示:您将看到
:
以1为步长从15.6生成序列 . 您可以通过键入help(":")
来更详细地了解此内容 . 所以您正在计算这些序列的值的均值 .
编辑
比率的对数当然是对数的差异(假设分母是非零的) . 所以你试图找到
Average
的log2中每个其他数值变量的log2之间的差异,你可以做类似的事情 .我不完全确定我是否正确地做了你需要做的事情,但是一般情况下使用
dplyr
或tidyverse
(也是ggplot2
),你的数据的长表示效果最好 . 我假设您想要为每个ProbeSetID
计算以X.
开头的所有变量的平均值 . 然后,对于每个X.
列和ProbeSetID
,计算比率并取log2
,即log2(X.bla/mean)
: