[R] preparing data for barplot()

Andrew Ziem ahz001 at gmail.com
Tue Mar 3 19:00:12 CET 2009


What is the best way to produce a barplot from my data?  I would like
the barplot to show each person with the values stacked
val1+val2+val3, so there is one bar for each person  When I use
barplot(data.matrix(realdata)), it shows one bar for each value
instead.

To post here, I created an artificical data set, but it works fine.

fakedata <- as.data.frame(list(LETTERS[1:3]))
colnames(fakedata) <- 'people'
fakedata['val1'] = abs(rnorm(3))
fakedata['val2'] = abs(rnorm(3))
fakedata['val3'] = abs(rnorm(3))
barplot(data.matrix(fakedata))

At a glance there is no substantial difference is between my fake data
and my real data.

> realdata
  person val1 val2 val3
1      A  221   71  175
2      B  222   85  147
> mydata
  people       val1     val2       val3
1      A 0.75526748 0.445386 0.09186245
2      B 0.06107566 2.008815 2.50269410
3      C 0.47171611 0.592037 0.57612168

However

> data.matrix(realdata)
  person val1 val2 val3
1     NA  221   71  175
2     NA  222   85  147
Warning messages:
1: NAs introduced by coercion
2: NAs introduced by coercion

So then I converted 'person' from a list to factors, which removed the
coercision error, but barplot() still shows each bar as value instead
of a person.

My serialized() data subset is here (look at bottom half where there
are no line numbers)
http://pastebin.com/m6d1e1d79


Thanks in advance,
Andrew




More information about the R-help mailing list