가장 큰 2 개의 값을 남기도록 데이터 세트를 부분 집합

Nov 18 2020

데이터 세트가 있습니다.

col1 col2 

A     3
A     3
B     2
C     1
B     2
A     3
D     5
B     2
D     5
B     2
F     0
F     0
A     3
C     1
C     1

상위 2 개의 col1 값을 "나가기"위해 어떻게 하위 집합을 만들 수 있습니까? 그래서 내 출력은 다음과 같습니다.

col1 col2 

A     3
A     3
A     3
D     5
A     3

내가 보았던 이 질문을 하지만, 내 질문에 대답하지 않았다.

답변

2 Duck Nov 18 2020 at 00:20

이것을 시도하지만 왜 하나만 있는지 확실하지 않습니다 D.

#Code
newdf <- df[df$col2 %in% sort(unique(df$col2),decreasing = T)[1:2],]
2 Jonas Nov 18 2020 at 00:21

귀하의 데이터가 data.frame.

우선, 당신은의 상위 2 개 값을 가져와야합니다 col2. 따라서 고유 한 값을 가져 와서 내림차순으로 정렬하고 처음 두 요소를 가져올 수 있습니다.

col2Values <- unique(df$col2)
top2Elements <- sort(col2Values,decreasing = TRUE)[c(1,2)]

이제 top2 값을 알았으므로이 값이에서 어디에 나타나는지 확인하기 만하면됩니다 col2. 이는 다음을 통해 수행 할 수 있습니다.

df[df$col2 %in% top2Elements,]

업데이트 : 이제 작동 할 것입니다. 거기에 오타가 있습니다.