在R中组合group_by和as.numeric的错误消息

时间:2017-07-05 15:25:03

标签: r dplyr grouping

我有dataset

Gene Sample  Ctmean

Chr1 0.0032 38.30534

Chr1  0.016 38.05460

Chr2 0.0032 34.96991

等等,其中样本名称“Sample”最初被定义为字符(一些是名称,一些是数字)。我已经过滤了只有数字的那些,所以我可以使用这些进行一次分析,命名的用于以后的单独分析,但是当尝试将它们分组到另一列进行此分析时,我遇到了错误消息

  

function_list [k]出错:    (list)对象不能被强制输入'double'

使用后

group_by(forstandardcurve,Gene) %>% as.numeric(forstandardcurve$Sample)

相反,如果我使用

as.numeric(forstandardcurve$Sample) %>% group_by(forstandardcurve,Gene)

我得到了

  

UseMethod(“group_by_”)中的错误:    没有适用于'group_by_'的方法适用于类的对象>“c('double','numeric')”

虽然“Gene”列仍应为“character”。 每个命令看起来都像我预期的那样自行运行。我对R很新,很抱歉,如果这是我犯的一个基本错误 - 如何解决这个问题,以便我可以使用“Sample”中的数字来插入方程式,每个组中都有单独的方程式“Gene”栏目?

1 个答案:

答案 0 :(得分:0)

您尝试将示例中的class转换为独立命令,但在另一个R动词的上下文中转换class更有意义。例如,假设您要计算按Sample分组的Gene的平均值。

从您的数据开始,Sample是一个字符:

df <- data.frame( Gene = c("Chr1","Chr1","Chr2"),
              Sample = c("0.0032","0.016","0.0032"),
              Ctmean = c(38.3, 38.0, 34.9))

你可以这样做:

df %>%
   group_by(Gene) %>%
   summarise( Sample = mean( as.numeric(as.character(Sample)) ) )

请注意,在转换为factor之前,我必须先从character更改为numeric。这给出了:

1   Chr1 0.0096
2   Chr2 0.0032