2017-10-28 1 views
1

현재 모든 관찰에 대해 "MarketStart"값을 포함하는 데이터 세트로 작업하고 있습니다. 이 매개 변수의 값은 -24 (2012 년 1 월에 해당)에서 47 (2017 년 10 월에 해당)까지 도달합니다. 데이터 수집은 2014 년 1 월에 시작되어 따라서 0에 해당합니다.R/ggplot2에서 월/연도로 숫자 변환

결과를 표시하는 데 ggplot2를 사용하고 있지만 허용되는 방식으로 x 축 라벨을 지정할 수 없습니다. 지금 사용하고있는 코드입니다. :

df <- data.frame(Name,Price,ObsMonth,Producer) 
plot.all <- 
    ggplot(data=df, aes(ObsMonth, Price, group = Name)) + 
    geom_point(alpha=0.05) + 
    geom_line() + 
    scale_x_continuous(expand = c(0, 0), limits = c(1, 36)) + 
    scale_y_continuous(expand = c(0, 0), limits = c(0, 1200)) +    
    labs(x="ObsMonth", y="Price in Euro", title="title") 

내가 지금은 x 축 제한,하지만 난 숫자가 날짜로 표시하는 "2012년 1월 2 월 2012 ..., 즈다 2017"앞으로이 숫자에 해당하는이 필요합니다 값이 위에 설명되어 있습니다.

EDIT1 : 여기에 요청 dput (DF)에 의해 제공되는 출력의 일부로서 :

42L, 44L, 9L, 12L, 35L, 21L, 11L, 21L, 25L, 24L, 34L, 32L, 29L, 
41L, 36L, 33L, 30L, 43L, 44L, 31L, 39L, 35L, 27L, 42L, 23L, 28L, 
26L, 38L, 22L, 33L, 30L, 39L, 25L, 32L, 28L, 36L, 23L, 27L, 24L, 
34L, 29L, 26L, 22L, 21L, 45L, 35L, 37L, 31L, 43L, 44L, 38L, 39L, 
28L, 29L, 25L, 22L, 21L, 34L, 23L, 36L, 35L, 31L, 33L, 37L, 44L, 
26L, 30L, 27L, 24L, 27L, 25L, 29L, 28L, 26L, 30L, 31L, 31L, 30L, 
18L, 15L, 23L, 24L, 20L, 19L, 16L, 22L, 21L, 25L, 14L, 6L, 3L, 
4L, 7L, 9L, 11L, 12L, 17L, 16L, 14L, 5L, 10L, 2L, 8L, 1L, 15L, 
13L, 13L, 10L, 16L, 12L, 15L, 14L, 24L, 26L, 11L, 8L, 16L, 3L, 
6L, 13L, 12L, 29L, 19L, 4L, 1L, 9L, 17L, 25L, 28L, 7L, 18L, 10L, 
15L, 27L, 2L, 5L, 14L, 20L, 22L, 21L, 23L, 19L, 18L, 16L, 6L, 
3L, 2L, 1L, 8L, 5L, 4L, 11L, 7L, 14L, 15L, 9L, 13L, 12L, 10L, 
..... and the end part..... 
, .Names = c("Name", 
"Preis", "Erhebungsmonat", "Hersteller"), row.names = c(NA, -6732L 
), class = "data.frame") 
+0

은'lubridate' 패키지를 변경합니다. 'dput (df)'의 출력으로 질문을 업데이트 할 수 있습니까? 이 패키지에 대한 자세한 내용은 [here] (http://lubridate.tidyverse.org)를 참조하십시오. – tyluRp

+0

답장을 보내 주셔서 감사합니다. 당신이 요청한 출력은 정말로 길다. 나는 질문에 그것을 편집하고 당신이 제안한 패키지를 체크 아웃 할 것이다! – lilputenga

+0

작은 샘플을 사용해보십시오. 'dput (head (df))' – tyluRp

답변

1

당신은 당신의 데이터 세트에 date 열을 추가 할 수 있습니다.

start <- as.Date("2012-01-01") 
df$date <- seq.Date(from = start, length.out = dim(df)[1], by = "month") 

그리고 여기에 도움이 될 것 플롯을 따라

plot.all <- 
ggplot(data=df, aes(date, Price, group = Name)) + 
geom_point(alpha=0.05) + 
geom_line() + 
scale_x_continuous(expand = c(0, 0), limits = c(1, 36)) + 
scale_y_continuous(expand = c(0, 0), limits = c(0, 1200)) + 
labs(x="date", y="Price in Euro", title="title") 
+0

답장을 보내 주셔서 감사합니다. 내가 제안한 방법으로 해결하려했지만 유용한 결과를 얻지 못했습니다. 나는 7000 가지가 넘는 관측치를 가진 데이터 셋을 가지고 일하고 있는데, 기본적으로 플롯에 목적을 표시하기 위해 언급 된 숫자 값을 "대체"해야합니다. 내 데이터 집합에 한 달에 하나의 관찰 만 포함 된 경우에만 메소드를 작동시킬 수있었습니다. – lilputenga

+0

'replace'를 사용할 수 있습니다. https://stackoverflow.com/questions/11811027/replace-function-examples#11811147 데이터가 'Longs'형식 인 경우 'ObsMonth' 열의 항목이' 'n (rep) (date, times = n)'을 사용할 수 있습니다. 일부 데이터 (구조)를 제공 할 수 있습니까? – markus

+0

다른 빠른 답장을 보내 주셔서 감사합니다. 당신이 제공 한 링크를 체크하고 나는 그 방법으로 해결 방법을 할 수 있다고 생각한다. 그렇지 않다면 그렇게 할 것을 선호했을 것이다. 나는 이것이 여전히 효과가있을 것이라고 생각한다. 매월 관찰 번호 : 데이터에 대한 요청에 관해서는, 나는 2 개 스크린 샷 만든 https://prnt.sc/h39rh2 는 "Erhebungsmonat가에 해당 https://prnt.sc/h39r8b를 구조 부 그 질문에 언급 된 "MarketStart". – lilputenga