는 R.은 조건부, 이름 목록이
에열 A를 data.table 사용하여 중복 문제를 해결하기 위해 노력하고있다 사용하여 일부를 R의 열 B에 따라 열 A에 일치하는 행을 제거 그 중 여러 번 나타납니다. B 열은 날짜 목록입니다. 다른 컬럼들도 복사하고 싶습니다. (Date on Name에 일어난 일들)
그러나 나는 단지 1 개의 엔트리를 가진 새로운 datatable에서 각각의 사람들을위한 대부분의 활동만을보고 싶습니다. 가장 최근 날짜에 해당하는 각 이름에 대해
예 데이터
name.last date
1: Adams 2014-10-20
2: Adams 2014-07-07
3: Barnett 2014-11-06
4: Barnett 2014-09-22
5: Bell 2014-10-22
6: Bell 2014-07-29
7: Burns 2014-09-08
8: Burns 2014-09-03
9: Camacho 2014-08-12
10: Camacho 2014-07-08
11: Casillas 2014-10-07
12: Casillas 2014-07-17
13: Chavez 2014-09-23
14: Chavez 2014-09-17
15: Chavira 2014-07-15
16: Chavira 2014-07-07
17: Claren 2014-10-30
18: Claren 2014-10-23
19: Colleary 2014-11-11
20: Colleary 2014-11-07
대답은 내가있는 DT 키 setkey(dt,name.last)
을 설정하지만 경우 (여기 이후 행이 각각의 제에 대한 가장 최근 날짜로 분류되어 있습니다.) 각 이름의 첫 번째 반환
unique()
을 사용하여 중복을 제거하면 테이블의 순서가 변경됩니다 (이름의 알파벳순).
unique(dt)
을 사용하면 가장 최근 날짜 일 필요는없는 각 이름의 첫 번째 모양이 반환됩니다.
키를 두 열 이상으로 설정하면 setkeyv(dt,c(name.last,date))
모든 키가 고유하므로 unique()
을 사용하여 중복을 제거 할 수 없습니다.
문제는 여기에 게시 된 글 중 하나와 비슷합니다 : Collapsing data frame by selecting one row per group. 그러나 키를 설정 한 후에 내 데이터를 조작하여 데이터를 조작 할 수있는 방법을 제안 할 수 없다면 선택한 데이터가 첫 번째인지 마지막인지를 추측 할 수 없습니다.