【发布时间】:2016-02-11 20:29:33
【问题描述】:
我正在尝试组织一个数据集,该数据集包含同一位置的多个副本,由不同的位置组成。此外,我只想将每个位置条目保留为报告的最大丰度。这是数据集的前 6 行。请注意第 3 行和第 4 行是同一位置,所以我想丢弃第 3 行并保留第 4 行,因为它的丰度更高。第 5 行和第 6 行的丰度都最高,但我只需要保留其中一个即可。
X abun location
1 1 L2507550
2 1 L668283
3 1 L831877
4 5 L831877
5 3 L668283
6 3 L668283
这是我使用的代码:
require(dplyr)
require(reshape2)
require(lubridate)
########Load data and clean########
#set working directory to load data from Data folder
setwd("V:/snailData")
getwd()
#Load csv
m <- read.csv("may.csv")
#group data by location and identify the maximum abundance for each location
m_max <- m %>% group_by(location) %>% summarise(m, max(abun))
这是我收到的错误消息:
> m_max <- m %>% group_by(location) %>% summarise(m, max(abun))
Error: expecting a single value
我收到这个错误是因为有多个最高丰度的记录吗?任何有关如何解决此问题的见解都会有所帮助。 谢谢。
更新
@paljenczy 的这个答案消除了错误消息(谢谢!): 管道运算符 %>% 将其左侧表达式的结果作为第一个参数传递给右侧函数。因此,您不需要 m 作为总结的第一个参数。试试
'm_max % group_by(location) %>% summarise(max(abun))'
但是,该命令最终仅挑选出丰度最高的那些位置(仅选出丰度为 15 的位置),而不是每个位置的最高丰度。有谁知道如何解决这个问题?
【问题讨论】:
-
可能你还加载了
plyr包,导致函数名冲突。因此,您可以尝试m %>% group_by(location) %>% dplyr::summarise(max(abun)),以后先加载 plyr,然后再加载 dplyr,或者如果不需要,则根本不加载 plyr -
@Elizabeth M. 查看更新后的答案。如果它解决了您的问题,请考虑接受它。
标签: r group-by unique dplyr summarization