【问题标题】:How do I interpret this error from aggregate function in R如何从 R 中的聚合函数解释此错误
【发布时间】:2014-10-20 23:35:38
【问题描述】:

我需要一些关于聚合函数的帮助。这是我的数据:(它显示了三列,但我的理解是有两列,分别命名为 V1 和 V3。显示从 330 开始的数字的第一列是 row.names。)

我想在 V3 上使用 V1 作为键做一个简单的聚合函数,比如 mean。我感觉我的数据类型不正确,但我不知道如何转换!

> testing
                        V1                 V3
330 chr1_10440000_11000000   1.59987556934357
335 chr1_10440000_11000000    89.185531616211
338 chr1_10440000_11000000   1.25018584728241
340 chr1_10440000_11000000   5.91385841369629
342 chr1_10440000_11000000   1.68633282184601
345 chr1_11000000_11240000  0.118176721036434
349 chr1_11000000_11240000     9.131010055542
350 chr1_11000000_11240000 0.0575727485120296
352 chr1_11000000_11240000   11.7410087585449
353 chr1_11000000_11240000   10.5057544708252
356 chr1_11000000_11240000   2.35379362106323
360 chr1_11240000_12040000   0.08041662722826
363 chr1_11240000_12040000   1.62903010845184
366 chr1_11240000_12040000  0.039043802767992
368 chr1_11240000_12040000   1.90981948375702
369 chr1_11240000_12040000   7.19360542297363
370 chr1_11240000_12040000   5.95961284637451
371 chr1_11240000_12040000   4.40743684768677
372 chr1_11240000_12040000  0.600234627723694
373 chr1_11240000_12040000   20.9832191467285
> 

这是我尝试使用的代码和相应的错误/警告消息:

> aggregate(testing, by=list(testing$V1), FUN=mean )
                 Group.1 V1 V3
1 chr1_10440000_11000000 NA NA
2 chr1_11000000_11240000 NA NA
3 chr1_11240000_12040000 NA NA
Warning messages:
1: In mean.default(X[[1L]], ...) :
  argument is not numeric or logical: returning NA
2: In mean.default(X[[2L]], ...) :
  argument is not numeric or logical: returning NA
3: In mean.default(X[[3L]], ...) :
  argument is not numeric or logical: returning NA
4: In mean.default(X[[1L]], ...) :
  argument is not numeric or logical: returning NA
5: In mean.default(X[[2L]], ...) :
  argument is not numeric or logical: returning NA
6: In mean.default(X[[3L]], ...) :
  argument is not numeric or logical: returning NA
> 

【问题讨论】:

    标签: r dataframe aggregate


    【解决方案1】:
    aggregate(V3 ~ V1, testing, FUN = function(x) mean(as.numeric(as.character(x))))
    

    应该可以解决问题。在应用函数之前,变量被转换为数字。

    【讨论】:

    • @DavidHaan 意思是:对V1中的每个唯一值应用函数到V3
    • 那么,我的真实数据框包含超过 2500 列,我怎样才能让这个函数适用于所有 2500 列?
    • @DavidHaan aggregate(testing[-1], by = list(testing$V1), FUN = function(x) mean(as.numeric(as.character(x))))
    • 有没有办法在新列中也包含中位数?我试过了:aggregate(annotated_sample_data[,-1], by = list(annotated_sample_data$domain), FUN = function(x) c(mean(as.numeric(as.character(x))),median(as.numeric(as.character(x)))) 但这不起作用...
    • @DavidHaan 您可以使用aggregate 两次,一次用于平均值,一次用于中位数。然后你可以cbind将一个结果输出到另一个。
    【解决方案2】:

    我对 aggregate() 函数有同样的问题,在数据框的每个变量上单独使用 mean() 工作正常(根本没有错误),但是在聚合函数中使用 mean 得到警告并返回北美数据。使用建议的解决方案解决:

    聚合(.~Fecha, data=meteorologia, FUN = function(x) mean(as.numeric(as.character(x))))

    运行版本

    版本 _
    平台 x86_64-apple-darwin17.0
    拱 x86_64
    操作系统 darwin17.0
    系统 x86_64、darwin17.0
    状态
    专业 4
    次要 0.2
    2020 年
    06月
    第 22 天
    svn 版本 78730
    语言 R
    version.string R 版本 4.0.2 (2020-06-22) 昵称再次起飞

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-27
      • 2010-10-17
      • 2021-12-31
      • 2014-01-04
      • 2020-09-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多