tidyr
패키지, 특히 해당 패키지의 gather()
함수를 사용하면 쉽습니다.
먼저 원하는 속성이 있다고 생각되는 데이터 프레임을 만듭니다. 내가 dplyr을 사용하고 있다는 사실을 알아 두십시오. pipe syntax (아래 내용은 %>%
입니다).
# packages we need
require(tidyr)
require(dplyr)
require(ggplot2)
# an example data frame
df <-
data.frame(var1 = rnorm(30),
var2 = rnorm(30),
A = sample(c(TRUE, FALSE), 30, replace = T),
B = sample(c(TRUE, FALSE), 30, replace = T),
C = sample(c(TRUE, FALSE), 30, replace = T),
D = sample(c(TRUE, FALSE), 30, replace = T),
E = sample(c(TRUE, FALSE), 30, replace = T)
)
주요 단계 gather
ED 각 열에 대해 한 번 각 데이터 포인트 (var1, var2)
이 5 배 복제되도록 tidyr::gather()
를 사용하여 데이터 프레임, 즉 rehape이다. gather
이 아닌 열의 데이터를 복제하는 것 외에도 gather()
함수는 두 개의 새로운 열을 작성합니다. 이 중 첫 번째는 class
이고 A, B, C, D 또는 E 값을 갖습니다. 두 번째는 is_in
이라고하며 해당 데이터 요소가 클래스에 있는지 여부에 따라 TRUE 또는 FALSE 값을가집니다. class
열에 의해 참조됩니다.
# reshape the data frame using dplyr
df.reshaped <-
df %>%
mutate(index = row_number()) %>% # number the data points
gather(class, is_in, A:E) %>% # repeat all (var1, var2) points 5x
filter(is_in == TRUE) %>% # keep only points you want
select(-is_in) # the is_in column is now superfluous
이제 데이터를 플로팅 할 준비가되었습니다. 우리의 플롯이 여러 패싯에 동일한 원본 데이터 포인트를 표시하는지 확인하기 위해 위의 호출에 원래 (즉, 수집 전) 행 번호별로 데이터 포인트 번호를 지정합니다. 나는 geom_text()
을 사용하여 음모를 꾸미므로 여러면에서 같은 번호를 보면 목표가 달성됩니다.
# plot the graph
df.reshaped %>%
ggplot(aes(x = var1, y = var2, label = index)) +
geom_text() +
facet_grid(.~class) +
theme_bw()
ggsave('SO_39820087.png', width = 10, height = 4)
결과 플롯은 내 컴퓨터에서 이와 유사합니다.

왜 샘플 입력 데이터와 (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) A [재현성 예]를 포함하지 정확히 무엇을 가지고 있고 무엇을 원하는지 명확히하십시오. 이것은 일반적인 플로팅 조언을위한 장소가 아닙니다. 특정 프로그래밍 질문을 요청하십시오. – MrFlick