2013-03-26 1 views
2

Далее следует подмножество dataframe у меня есть:Упорядочивание значения столбца символов для построения

sample <- structure(list(MONTH_DAY = c("1_0", "1_1", "1_10", "1_11", "1_12", 
"1_13", "1_14", "1_15", "1_16", "1_17", "1_18", "1_19", "1_2", 
"1_20", "1_21", "1_22", "1_23", "1_3", "1_4", "1_5", "1_6", "1_7", 
"1_8", "1_9", "2_0", "2_1", "2_10", "2_11", "2_12", "2_13", "2_14", 
"2_15", "2_16", "2_17", "2_18", "2_19", "2_2", "2_20", "2_21", 
"2_22", "2_23", "2_3", "2_4", "2_5", "2_6", "2_7", "2_8", "2_9", 
"3_0", "3_1"), variable = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("9", 
"10", "11", "12", "13"), class = "factor"), value = c(NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 51, 18 
)), .Names = c("MONTH_DAY", "variable", "value"), row.names = c(NA, 
50L), class = "data.frame") 

Я построение графика с использованием ggplot2 с осью х существами формата MONTH_DAYOFMONTH т.е. 1_13 означает его январь и 13 того же месяца, ось y, указывающая счетчик (который находится в столбце value). Когда я сюжет данных, используя команду:

ggplot(sampleData, aes(x=MONTH_DAY, y=value, colour=variable, group=variable)) + `geom_line() + theme(axis.text.x=element_text(angle=90, size=4, hjust=-0.2, vjust=0.5)) + scale_colour_discrete("Months")` 

ось х не отсортирован и отображает начиная со значениями х-оси является 1_0, 1_1, 1_10, 1_11 ... вместо 1_0, 1_1, 1_2, 1_3.

Как я могу сортировать такие значения, чтобы на графике отображались данные, которые я хотел бы видеть?

+1

Это связано концептуально другой вопрос, вы спросили: http://stackoverflow.com/q/15370042/1270695. Просмотрите мои комментарии к основному вопросу для решения. – A5C1D2H2I1M1N2O1R2T1

+0

Я бы преобразовал 'MONTH_DAY' в коэффициент, используя' factor() ', подавая желаемый порядок в аргументе' levels'. –

+1

Какой месяц-день '1_0'? –

ответ

1

Я бы просто превратить его в дату и сюжет его, как это (NB в данные, которые вы дали всем значениям бар два, были NA, поэтому я сделал некоторые значения, используя runif(50 , max = 50) ...

sampleData$MONTH_DAY <- as.Date(sampleData$MONTH_DAY , format = "%m_%d") 
ggplot(sampleData, aes(x=MONTH_DAY, y=value, colour=variable, group=variable)) + 
geom_line() + 
theme(axis.text.x=element_text(angle=90, size=4, hjust=-0.2, vjust=0.5)) +   
scale_colour_discrete("Months") 

enter image description here

4

Попробуйте mixedsort, из gtools пакет:

library(gtools) 
sample$MONTH_DAY <- 
    with(sample, ordered(MONTH_DAY, levels=mixedsort(MONTH_DAY))) 
## Try your plotting code here 

Для того, чтобы проиллюстрировать то, что он делает:

MONTH_DAY = c("1_0", "1_1", "1_10", "1_11", "1_12", 
"1_13", "1_14", "1_15", "1_16", "1_17", "1_18", "1_19", "1_2", 
"1_20", "1_21", "1_22", "1_23", "1_3", "1_4", "1_5", "1_6", "1_7", 
"1_8", "1_9", "2_0", "2_1", "2_10", "2_11", "2_12", "2_13", "2_14", 
"2_15", "2_16", "2_17", "2_18", "2_19", "2_2", "2_20", "2_21", 
"2_22", "2_23", "2_3", "2_4", "2_5", "2_6", "2_7", "2_8", "2_9", 
"3_0", "3_1") 

head(sort(MONTH_DAY), 10) 
# [1] "1_0" "1_1" "1_10" "1_11" "1_12" "1_13" "1_14" "1_15" "1_16" "1_17" 

head(mixedsort(MONTH_DAY), 10) 
# [1] "1_0" "1_1" "1_2" "1_3" "1_4" "1_5" "1_6" "1_7" "1_8" "1_9" 
Смежные вопросы