在对一列进行求和并保留其他列

时间:2017-06-15 12:07:40

标签: r

我有几列重复行的数据集。(基于名称ProjectID的一列重复)。

我想删除重复的行并只保留其中一行。 但是,这些行中的每一行都有一个单独的金额值,需要对最终的合并行进行求和和存储。

我使用了聚合功能。但是它会删除所有其他列(通过我知道的用途)。 有人可以告诉我一个更简单的方法。

附加了示例数据集。 dataset

2 个答案:

答案 0 :(得分:0)

这可以使用dplyr解决,正如@PLapointe指出的那样。如果您的数据集名为df,那么这将作为

df %>% 
group_by(`Project ID`, `Project No.`, `Account Head`, `Function`, `Functionary`) %>% 
summarise(cost.total = sum(Amount))

这应该这样做。您还可以调整要保留的变量。

答案 1 :(得分:0)

它是一种更复杂的方法,但对我有用。 我使用聚合函数聚合了有关ProjectID的数量,并将它们存储在一个新的tibble中。 此外,我将此列作为新列附加到原始tibble。 它并没有完全符合我的要求。但我能够使用新的专栏Final_Amount来保持早期的Amount列不相关。

Duplicate_remove2 <- function(dataGP_cleaned) 
{  
#aggregating unique amounts
aggregated_amount <- aggregate(dataGP_cleaned['Amount'], by=dataGP_cleaned['ProjectID'], sum)
#finding Distinct dataset
dataGP_unique <- distinct(dataGP_cleaned, ProjectID, .keep_all = TRUE)
#changing name of the column for easy identification
aggregated_amount$Final_Amount <- aggregated_amount$Amount
#appending the list
aggregate_dataGP <- bind_cols(dataGP_unique, aggregated_amount['Final_Amount'] )
return(aggregate_dataGP)
}