【发布时间】:2018-11-05 01:23:09
【问题描述】:
您好,感谢您的阅读。
我一直在尝试聚合一些数据,并且已经能够通过聚合函数成功地做到这一点,但我也想尝试通过使用 dplyr 运行管道来做同样的事情 - 但是我一直收到错误消息:
mutate_impl(.data, dots) 中的错误:评估错误:无法 找到函数“15.2”。
我目前有这个数据集p:
sample gene ct
1 s001 gapdh 15.2
2 s001 gapdh 16
3 s001 gapdh 14.8
4 s002 gapdh 16.2
5 s002 gapdh 17
6 s002 gapdh 16.7
7 s003 gapdh Undetermined
8 s003 gapdh 14.6
9 s003 gapdh 15
10 s001 actb 24.5
11 s001 actb 24.2
12 s001 actb 24.7
13 s002 actb 25
14 s002 actb 25.7
15 s002 actb 25.5
16 s003 actb 27.3
17 s003 actb 27.4
18 s003 actb Undetermined
并希望它得到它:
p2$sample p2$gene p2$ct.mean p2$ct.sd
1 s001 actb 24.46666667 0.25166115
2 s002 actb 25.40000000 0.36055513
3 s003 actb 27.35000000 0.07071068
4 s001 gapdh 15.33333333 0.61101009
5 s002 gapdh 16.63333333 0.40414519
6 s003 gapdh 14.80000000 0.28284271
我当前使用的导致上述错误的代码:
library(dplyr)
p_ave_sd <- p %>%
filter(p$ct != "Undetermined") %>%
mutate_at(as.character(p$ct), as.numeric, rm.na = TRUE) %>%
group_by(p$gene) %>%
summarise(mean=mean(p$ct), sd=sd(p$ct))
这绝对是“变异”步骤让我感到困惑,我尝试了 mutate_all()、mutate_if(is.factor, is.numeric) 等,但每个都有自己的错误。
感谢您的帮助!
【问题讨论】:
-
为什么在
dplyr语句中使用p$? -
你是对的,它们不是必需的,它们正在触发 mutate 函数。但是“mutate(as.numeric(ct)”仍然没有将 ct 更改为数字。
标签: r aggregate-functions dplyr