on 08/01/2008 10:21 AM Sandy Small wrote:
Hi
I'm sure this question has been asked before but I can't find it in the
archives.
I have a data frame which includes interval and ordered nominal results.
It looks something like
"Measured" "Eyeball"
46.5 Normal
43.5 Mild
56.2 Normal
41.1 Mild
37.8 Moderate
12.6 Severe
17.3 Moderate
39.1 Normal
26.7 Mild
NULL Normal
27.9 NULL
68.1 Normal
I want to plot the Measured value against the "Eyeball" value but if I
simply plot it the "Eyeball" values are plotted in alphabetical order. I
do not want to change the "names" as "Normal, Mild, Moderate, Severe"
are standard but I want to plot them in the order "Normal", "Mild",
"Moderate", "Severe" so that the trend (or not) is obvious.
Any help would be much appreciated.
Many thanks
Sandy
We are going to need a bit more info.
What type of plot?
Point estimates of the means per level of severity?
Boxplot?
Some possibilities:
# Read in the data from the clipboard, converting the "NULL"s to NAs
DF <- read.table("clipboard", header = TRUE, na.strings = "NULL")
> DF
Measured Eyeball
1 46.5 Normal
2 43.5 Mild
3 56.2 Normal
4 41.1 Mild
5 37.8 Moderate
6 12.6 Severe
7 17.3 Moderate
8 39.1 Normal
9 26.7 Mild
10 NA Normal
11 27.9 <NA>
12 68.1 Normal
# Change the factor ordering and include NA as a level
DF$Eyeball <- factor(DF$Eyeball,
levels = c("Normal", "Mild", "Moderate", "Severe",
NA),
exclude = NULL)
# Do a boxplot
boxplot(Measured ~ Eyeball, data = DF)
# Plot means by severity
Res <- tapply(DF$Measured, list(DF$Eyeball), mean, na.rm = TRUE)
plot(Res, pch = 19, ylab = "Mean", xlab = "Severity", xaxt = "n")
axis(1, at = 1:5, paste(names(Res)))
See ?factor, ?plot.default, ?boxplot and ?axis
HTH,
Marc Schwartz
______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.