다음을 올바르게 수행하는 방법에 대해서는 상당히 당황 스럽습니다. 나는 아마 그것이 단순하다는 것을 알고있다. 그러나 나는 그것을 아주 이해할 수 없다.dplyr을 사용하여 최대 값 이전의 모든 값을 필터링하십시오.
물 속으로 들어 올려지고 내려간 계기로 데이터를 수집했다고합니다. 데이터에 상관없이 깊이를 읽습니다. 전 단지 의 데이터에 관심이 있고 모든 데이터를 필터링하고 싶습니다. 더 명확하게 나는 depth
의 가장 낮은 값 인 앞에 깊이 판독 값 을 걸러 내고 싶습니다. 한 가지 작은 점은 종종 데이터가 가장 깊은 지점까지 계속하기 전에 약간 올라간 두 개의 깊이 값이 있다는 것입니다. 따라서 순수한 오름차순/내림차순 문제는 아닙니다. 이상적으로 dplyr
접근 방식 (또는 dplyr
과 잘 작동하는 방식)을 사용합니다. 데이터에 그룹이 있기 때문입니다.
library(dplyr)
df1 <- data.frame(depth=c(1:6,5,7:10,10.5:1), x=rnorm(21), Group="x")
df2 <- data.frame(depth=c(1:6,5,7:10,10.5:1), x=rnorm(21), Group="y")
df <- rbind(df1, df2)
내가 가장 깊은 가치를 찾을 쉽게 할 수 이대로가 붙어 점점 계속 : 여기에 몇 가지 더미 데이터는
df %>% mutate(depth==max(depth))
나는 또한 하나 개의 그룹에 대한 깊이 (마크의 대답 @ 사용) 찾을 수 : 나는 group_by
문을 추가하려고 할 때
df %>%
filter(Group=="x") %>%
add_rownames() %>%
filter(rowname %in% c(seq(which.max(depth))))
그러나, 나는 여전히 첫 번째 그룹에서 원하는 결과를 얻을 :
df %>%
add_rownames() %>%
group_by(Group) %>%
filter(rowname %in% c(seq(which.max(depth))))
group_by
은 필터에서 작동하지 않을 것이라고 예상했지만 필터를 사용하지 않고 rownames를 서브하는 방법을 모르겠습니다. 어떤 아이디어가 있습니까?
@Psidom - 제가 위에서 말했듯이, 그것이 내가 일치 할 필요는 상승/하강 패턴이 엄격하지 않다. – boshek
@ Marc의 답변으로 필요한 것을 얻을 수 있습니까? – Psidom
@Psidom 정확하지 않습니다. 나는 이것을'dplyr'와 같은 방식으로 적용하는 방법을 알지 못했습니다. – boshek