2017-04-21 122 views
0

我有一個大的數據框與16列(變量),我需要一種方法來減少其大小(記錄數)根據條件。想知道是否有人在這裏知道如何做到這一點。R如何刪除重複記錄並只留下一個使用R?

我需要根據這個清理文件。它包含以下列:「員工ID」,「年」,「月」和「終止」。變量「Termed」被編碼爲0 =有效,1 =有效。因此,每個「員工ID」有多行(他們在公司工作的每個年份和每月都有一行),直到「終止」列中的值爲「1」,或者沒有更多關於該特定數據的數據「員工ID」(「終止」列中的所有值都是「0」),在這種情況下,我需要保留最後一條記錄。

總之,我需要以一種方式清理文件,對於終止(終止= 1)的人員,每個員工ID的終止= 1以及從未終止的終端(終止變量中的所有值均爲「0」)的記錄具有

有沒有辦法在R中做到這一點?我感謝您的幫助。

+0

你描述你的問題真的很好,但說實話,這是一個非常簡單和基本的問題。查看Youtube上的任何R-introduction課程。 – MLEN

+1

請提供一個示例數據集。 – www

回答

0

到羅馬有很多方法。對於data.frames,應該這樣做:

# Generate some dummy data 
employee_data <- data.frame(employee_id = c(rep(1,10),rep(2,10)), year = 1990, month = rep(1:10,2), termination = c(rep(0,10),rep(0,9),1)) 

# Order entries according to wishes 
employee_data <- employee_data[with(employee_data, order(employee_id, -termination, -year, -month)), ] 

# Select first rows per employee_id 
employee_data[! duplicated(employee_data$employee_id), ] 
    employee_id year month termination 
10   1 1990 10   0 
20   2 1990 10   1 

排序算法非常快,所以這也適用於非常大的數據集。

不嚴格相關:我會使用data.table包。語法更好,對大數據更好。