我有幾列重複行的數據集(基於名稱ProjectID複製一列)。刪除重複的行,同時總結一列並保留其他列
我想刪除重複的行並保留其中的一個。 但是,這些行中的每一行都有一個單獨的金額值,需要對最終合併行進行彙總和存儲。
我已經使用了聚合函數。但它會刪除所有其他列(按我所知的用法)。 有人請告訴我一個更簡單的方法。
附加示例數據集。 dataset
我有幾列重複行的數據集(基於名稱ProjectID複製一列)。刪除重複的行,同時總結一列並保留其他列
我想刪除重複的行並保留其中的一個。 但是,這些行中的每一行都有一個單獨的金額值,需要對最終合併行進行彙總和存儲。
我已經使用了聚合函數。但它會刪除所有其他列(按我所知的用法)。 有人請告訴我一個更簡單的方法。
附加示例數據集。 dataset
這可以使用dplyr
來解決@PLapointe指出。如果你的數據集被稱爲df
那麼這將作爲
df %>%
group_by(`Project ID`, `Project No.`, `Account Head`, `Function`, `Functionary`) %>%
summarise(cost.total = sum(Amount))
這應該這樣做。您還可以調整要保留的變量。
謝謝。但是,我正面臨着這些問題。 1. Project_Id未被識別。實際列名是項目ID。那麼我如何使用它的空間部分。 2. group_by需要所有這些變量是相同的,只保留這些? 例如:說明不同。我也需要保留它們。 – Sushant
我更新了問題的第一部分。現在對於第二部分,你是否需要'group_by'描述,或者你對總數有好處,你需要'將它連接到原始數據集? – akash87
Duplicate_remove dataGP_unique < - dataGP_cleaned%>% + group_by('ProjectID','Project No.','Voucher','Account Head Description','Acc Head','Function ','Functionary','Description')%>% +總結(cost.total =總和(金額)) 回報(dataGP_unique) }' 這是我所創建的功能。 這是錯誤:* group_by _中的錯誤(.data,.dots = lazyeval :: lazy_dots(...),add = add): object'ProjectID'not found * – Sushant
它是一個更復雜的方法,但爲我工作。 我使用聚合函數聚合了有關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)
}
見包'group_by'和''summarise' dplyr' –
請加'dput(頭(your_data,20))'來描述,你試過 –
謝謝你什麼。我對dplyr的一部分或其用法不瞭解。 – Sushant