숫자 요소의 벡터와 간격의 시작점과 끝점을 정의하는 두 개의 열이있는 데이터 프레임이 있습니다. 데이터 프레임의 각 행은 하나의 간격입니다. 벡터의 각 요소가 속하는 간격을 찾고 싶습니다. 그것을 할 수벡터의 각 요소가 속한 데이터 프레임의 간격 행을 찾으십시오.
elements <- c(0.1, 0.2, 0.5, 0.9, 1.1, 1.9, 2.1)
intervals <- structure(list(phase = c("a", "b", "c"),
start = c(0, 1, 2),
end = c(0.5, 1.9, 2.5)),
.Names = c("phase", "start", "end"),
row.names = c(NA, -3L),
class = "data.frame")
여기 한 가지 방법 :
library(intrval)
phases_for_elements <-
map(elements, ~.x %[]% data.frame(intervals[, c('start', 'end')])) %>%
map(., ~unlist(intervals[.x, 'phase']))
여기 년대 tidyverse에 반대하는 사람들을위한
# Find which interval that each element of the vector belongs in
library(tidyverse)
elements <- c(0.1, 0.2, 0.5, 0.9, 1.1, 1.9, 2.1)
intervals <- frame_data(~phase, ~start, ~end,
"a", 0, 0.5,
"b", 1, 1.9,
"c", 2, 2.5)
같은 예제 데이터 : 다음
몇 가지 예를 들어 데이터의 출력 :[[1]]
phase
"a"
[[2]]
phase
"a"
[[3]]
phase
"a"
[[4]]
character(0)
[[5]]
phase
"b"
[[6]]
phase
"b"
[[7]]
phase
"c"
하지만 적은 타이핑으로 더 간단한 방법을 찾고 있습니다. 관련 질문에서 findInterval
을 본 적이 있지만이 상황에서 어떻게 사용할 수 있는지 잘 모르겠습니다.
, purrrfurrr 당신이 만약 @ 벤의 길 예제 데이터를 작성하려면 기본 기능을 마스킹하는 것으로 유명한 많은 수의 패키지를 설치하고로드해야합니다. 'dput'은 기본 R 만 필요하며 데이터를받는 사람은 물론 데이터를 공유하는 사람도 매우 편리합니다. – Roland
@Roland, 내 업데이트를 참조하십시오. 하지만 당신이 내 질문을 편리하게 찾지는 못했고, 자신을 괴롭힐 필요가 없습니다. – Ben