1

As I am beginner R, I allow myself to ask R users a little question. I want to represent in a graphic (points, lines, curves) the values of weight of two human groups treated and not treated by drug (0,1) measured ten times (months).

drug    NumberIndividu Mar Apr May June July August September November October December
1   9    25.92    24.6  31.85   38.50  53.70   53.05    65.65    71.45      69.10      67.20
1   10   28.10    26.6  32.00   38.35  53.60   53.25    65.35    65.95      67.80      65.95
1   11   29.10    28.8  30.80   38.10  52.25   47.30    62.20    68.05      66.20      67.55
1   13   27.16    25.0  27.15   34.85  47.30   43.85    54.65    62.25      60.85      58.05
0   5    25.89    25.2  26.50   27.45  37.05   38.95    43.30    50.60      48.20      50.10
0   6    28.19    27.6  28.05   28.60  36.15   37.20    40.40    47.80      45.25      44.85
0   7    28.06    27.2  27.45   28.85  39.20   41.80    51.40    57.10      54.55      55.30
0   8    22.39    21.2  30.10   30.90  42.95   46.30    48.15    54.85      53.35      49.90

I tried :

w= read.csv (file="/file-weight.csv", header=TRUE, sep=",")
w<-data.frame(w)
rownames(w[1:8,])
rownames(w)<-(c(w[,1]))

cols <- character(nrow(w))
cols[rownames(w) %in% c(rownames(w[1:4,]))]<-"blue"
cols[rownames(w) %in% c(rownames(w[5:8,]))]<-"red"
pairs(w,col=cols)

My question is how to configurate matplot function to have one graphic view (points or curves or hist +curves) My main goal is to visualize all distributions of individus following two colors of first column (drug) for all dates in one image.

Thanks a lot for your suggestions

FXQuantTrader
  • 6,821
  • 3
  • 36
  • 67
user3064106
  • 51
  • 1
  • 6

1 Answers1

5

Is this what you had in mind?

The code is based on the answer to ->this question<-, just using your dataset (df) instead of iris. So in that response, replace:

x <- with(iris, data.table(id=1:nrow(iris), group=Species, Sepal.Length, Sepal.Width,Petal.Length, Petal.Width))

with:

xx <- with(df, data.table(id=1:nrow(df), group=drug, df[3:12]))

If all you want is the density plots/histograms, it's easier (see below). These are complementary, because they show that weight is increasing in both control and test groups, just faster in the test group. You wouldn't pick that up from the scatterplot matrix. Also, there's the suggestion that variability in weight is greater in the control group, and grows over time.

library(ggplot2)
library(reshape2)    # for melt(...)
# convert df into a form suitable to use with ggplot
gg <- melt(df,id=1:2, variable.name="Month", value.name="Weight")
# density plots
ggplot(gg) + 
  stat_density(aes(x=Weight, y=..scaled.., color=factor(drug)),geom="line", position="dodge")+
  facet_grid(Month~.)+
  scale_color_discrete("Drug")
# histograms
ggplot(gg) + 
  geom_histogram(aes(x=Weight, fill=factor(drug)), position="dodge")+
  facet_grid(Month~.)+
  scale_fill_discrete("Drug")

Community
  • 1
  • 1
jlhoward
  • 58,004
  • 7
  • 97
  • 140
  • @user3064106 I think he just did :-) – Carl Witthoft Jan 14 '14 at 18:01
  • Thanks, but I still have an error message dealing with : the object "drug" was not found. color=factor(drug)),geom="line", position="dodge")+ – user3064106 Jan 14 '14 at 23:28
  • maybe should I precise drug as colname in df? like colname(def$drug) – user3064106 Jan 14 '14 at 23:33
  • 1
    Sorry, I should have been clearer. I read the dataset at the top of your question into a dataframe `df`, which ends up having columns: `drug`, `NumberIndividu`, `Mar`, `April`, etc. I think this is equivalent to your `w`. – jlhoward Jan 14 '14 at 23:37