【问题标题】:Using dplyr to summarise a group wtih duplicates of the maximum number使用 dplyr 汇总具有最大数量重复的组
【发布时间】: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 %&gt;% group_by(location) %&gt;% dplyr::summarise(max(abun)),以后先加载 plyr,然后再加载 dplyr,或者如果不需要,则根本不加载 plyr
  • @Elizabeth M. 查看更新后的答案。如果它解决了您的问题,请考虑接受它。

标签: r group-by unique dplyr summarization


【解决方案1】:

管道运算符%&gt;% 将其左侧表达式的结果作为第一个参数传递给右侧函数。因此您不需要m 作为summarise 的第一个参数。使用dplyr 0.4.3,试试

library(dplyr)

m <- data.frame(X = 1:6,
                abun = c(1, 1, 1, 5, 3, 3),
                location = c("L2507550",
                             "L668283",
                             "L831877",
                             "L831877",
                             "L668283",
                             "L668283"),
                stringsAsFactors = F)

m_max <- m %>% group_by(location) %>% summarise(max(abun))

> m_max
Source: local data frame [3 x 2]

  location  abun
     (chr) (dbl)
1 L2507550     1
2  L668283     3
3  L831877     5

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-31
    • 2017-01-08
    • 2020-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-30
    • 1970-01-01
    相关资源
    最近更新 更多