我有一个数据库,该数据库具有重复的坐标(纬度和经度)以及相应的大量证据以及其他变量(请参见下表)。我想删除这些重复项,但同时将相应的数量相加。此外,我想在最终数据框中保留有关其他变量的信息。
我可以消除重复项并求和相应的丰度
data.2<-ddply(data,~lat + long,summarise, abund=sum(abund))
data.2<-data.2[-1,]
但不知道如何将其他变量(例如year,method ...)与数据框同时保留。
以下是可重复的示例
id<-c('6916','7727','7728','7230')
method<-c('R','R','R','T')
year<-c(2012,2012,2012,2012)
lat<-c(-6.612,-6.611,-6.611,-6.610)
long<-c(30.638,30.607,30.607,30.609)
abund<-c(1,1,1,1)
df<-data.frame(id,method,year,lat,long,abund)
答案 0 :(得分:0)
以下是data.table解决方案。假设您希望将重复的abund
项的lat/long
个计数计入abund
的相应总和中。
require(data.table); setDT(df)
df[, abund := sum(abund), .(lat, long)] # Sum abund across lat/long
df = df[!duplicated(lat) & !duplicated(long)] # Remove duplicate lat/long entries
> df
id method year lat long abund
1: 6916 R 2012 -6.612 30.638 1
2: 7727 R 2012 -6.611 30.607 2
3: 7230 T 2012 -6.610 30.609 1