【发布时间】:2017-09-02 00:54:14
【问题描述】:
我对 R 相当陌生,并且在看起来应该是一个非常简单的过程时遇到了一些困难。我有一个名为“底部”的数据框,其中包含以下列:“物种”、“类别”和“Y9:Y15”(表示 2009-2015 年。“物种”列包含鱼名,“类别”包含字母“ B" 一直向下表示底鱼(这个数据框是从一个有许多不同种类的鱼的较大的数据框中取出的)和 "Y9:Y15" 包含第一列中鱼种的价格:
Species Category Y9 Y10 Y11 Y12 Y13 Y14 Y15
Amberjack B 2.65 NA NA NA 3.00 NA 3.31
Ambon emperor B 2.62 2.63 NA NA 3.75 3.06 3.00
Bigeye bream B 2.62 2.21 2.86 NA 3.09 3.10 3.02
Bigeye scad B 3.33 NA 2.81 2.51 2.62 3.00 2.77
Bigeye trevally B 2.69 2.75 NA NA 3.73 3.22 3.00
Black jack B 2.66 2.52 2.55 3.00 3.75 3.26 3.42
我正在尝试根据以下三个条件计算 3 个平均值:
1) 名称中带有“石斑鱼”的所有鱼类的平均值 2)名称中带有“鲷鱼”的所有鱼类的平均值 3) 不具备上述条件的所有其他鱼类的平均值。
我发现我可以使用 grepl 获得适合我的条件的真或假向量 : grepl("grouper",Bottom$Species)],但我还没有想出如何将它添加到一个函数中,告诉 R 根据向量的“TRUE”值计算平均值。
对此的任何建议将不胜感激。
谢谢!
【问题讨论】:
-
试试
mean( Bottom[ grepl("grouper", Bottom$Species), -(1:2)] ) -
我尝试使用它,但由于我的数据有 NA,它给了我这个:mean( Bottom[ grepl("grouper", Bottom$Species), -(1:2)] ) 警告消息:在 mean.default(Bottom[grepl("grouper", Bottom$Species), -(1:2)]) 中:参数不是数字或逻辑:返回 NA 我尝试添加 na.rm=TRUE, (mean( Bottom [ grepl("grouper", Bottom$Species), -(1:2)], na.rm=TRUE ) 但它给了我同样的错误。
标签: r