2017-04-21 1 views
0

16 개의 열 (변수)이있는 큰 데이터 프레임이 있으며 조건에 따라 크기 (레코드 수)를 줄이는 방법이 필요합니다. 여기에있는 누군가가 R에서 그것을 할 수있는 방법을 알고 있는지 궁금합니다.반복 레코드를 삭제하고 R을 사용하여 하나만 남겨 두는 방법은 무엇입니까?

이걸 기반으로 파일을 정리해야합니다. 여기에는 "직원 ID", "연도", "월"및 "종료"열이 있습니다. 변수 "Termed"는 0 = Active 및 1 = Termed로 코딩됩니다. 따라서 "종업원 ID"당 여러 행이 있습니다 ("종결"열에 "1"값이 있거나 해당 특정 데이터가 더 이상 없을 때까지 회사에서 근무한 해와 월 각각 하나씩) "종업원 ID"("종결"열의 모든 값은 "0"입니다.)이 경우 마지막 레코드 만 유지해야합니다.

요약하면 필자는이 방법으로 파일을 정리해야합니다. 종료 된 사람 (종료 = 1)의 경우 각 종업원 ID에 대해 종결 = 1이고 종결되지 않은 사람에 대한 마지막 레코드 (종단 변수의 모든 값은 "0"입니다.)

R에서이 작업을 수행 할 수 있습니까? 도움을 주셔서 감사합니다.

+0

당신은 당신의 문제를 정말로 잘 설명하지만 솔직히 말해서 이것은 매우 간단하고 기본적인 문제입니다. Youtube의 R 소개 과정을 확인하십시오. – 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 패키지를 사용합니다. 구문이 더 좋으며 큰 데이터를 사용할 때 더 잘 작동합니다.

관련 문제