On Sep 12, 2010, at 3:34 PM, Dennis Murphy wrote:

Hi:

Natasha said:
********
I changed it so i hope it will look better now
the matrix is like this:
                Age    No.   Age   No.   Age    No.
Center1     5        2          8       7
Center2    10      7        20     9       4          10
column name = sequence of age-no.

But what I want the data to look like is this
Age
1      2      3       4       5      6       7      8       9     10

      20
Center1 2 7
Center2
10                                                 7               9
column name= age of ppl
entries = number of ppl with that age in on center
*********

It's a continuation of the reshape problem, but we have to
change the NAs in the reshaped data frame to zeros first:

df2[is.na(df2)] <- 0

xtabs(n ~ center + age, data = df2)
     age
center  5  6  7  8  9 10 11 12 13 14
    1  0 10  0 13  0  9  0  7  0 10
    2  0  0 12 14  0  0 16  0  0 13
    3  6  0  0  0 10  0 12  0  9  0

How's that?


You've done all the hard work, but the OP wanted the full range of age values from 1:max and that pretty easy to do with one further step that adds entries fo the missing age levels:

> df3 <- rbind(df2, data.frame(center=1,time=1, age=1:max(df2$age), n=0))

> xtabs(n ~ center + age, data = df3)
      age
center  1  2  3  4  5  6  7  8  9 10 11 12 13 14
     1  0  0  0  0  0 10  0 13  0  9  0  7  0 10
     2  0  0  0  0  0  0 12 14  0  0 16  0  0 13
     3  0  0  0  0  6  0  0  0 10  0 12  0  9  0

--
David.
Dennis

On Sun, Sep 12, 2010 at 9:46 AM, Dennis Murphy <djmu...@gmail.com> wrote:

Hi:

Here's a made up example using the reshape function:

Input data:
df <- structure(list(center = 1:3, age1 = c(6L, 7L, 5L), n1 = c(10L,
12L, 6L), age2 = c(8L, 8L, 8L), n2 = c(13L, 14L, NA), age3 = c(10L,
10L, 9L), n3 = c(9L, NA, 10L), age4 = c(12L, 11L, 11L), n4 = c(7L,
16L, 12L), age5 = c(14L, 14L, 13L), n5 = c(10L, 13L, 9L)), .Names =
c("center",
"age1", "n1", "age2", "n2", "age3", "n3", "age4", "n4", "age5",
"n5"), class = "data.frame", row.names = c(NA, -3L))

df
 center age1 n1 age2 n2 age3 n3 age4 n4 age5 n5
1      1    6 10    8 13   10  9   12  7   14 10
2      2    7 12    8 14   10 NA   11 16   14 13
3      3    5  6    8 NA    9 10   11 12   13  9

# To reshape more than one variable at a time, you need
# to put the sets of variables into a list, as follows:

df2 <- reshape(df, idvar = 'center', varying =
  list(c(paste('age', 1:5, sep = '')), c(paste('n', 1:5, sep = ''))),
  v.names = c('age', 'n'), times = 1:5, direction = 'long')
df2
   center time age  n
1.1      1    1   6 10
2.1      2    1   7 12
3.1      3    1   5  6
1.2      1    2   8 13
2.2      2    2   8 14
3.2      3    2   8 NA
1.3      1    3  10  9
2.3      2    3  10 NA
3.3      3    3   9 10
1.4      1    4  12  7
2.4      2    4  11 16
3.4      3    4  11 12
1.5      1    5  14 10
2.5      2    5  14 13
3.5      3    5  13  9

HTH,
Dennis

On Sun, Sep 12, 2010 at 7:45 AM, Natasha Asar <natasha.asa...@yahoo.com >wrote:

Greeting R helpers J
I am not familiar with R but I have to use it to analyze data set that I
have
(30,000 20,000)
I want to change the structure of the dataset and I am wondering how that
might
be possible in R
A main data looks like this:  some entities are empty
Age        No.         Age        No.         Age        No.
Center1                5              2              8
7

Center2 10 7 20
9              4              10
But what I want the data to look like is
Age                        1              2              3
4              5              6              7              8
9              10
      20
Center1
2                                              7
Center2
10
7              9

It should read the entities one by one
when j is in age column take its value and consider it as the column
number for
new matrix
then go to next entity (j No. columns) and put that entity under the
columns
number identified in previous step.
In other word
it should get the each element in No. columns (one by one) and place them
in a
new matrix under the column number which are equal to entity of age
columns of
first matrix
i have tired ncol, and cbind and things like that but I guess im on the
wrong
path because it is not working. I am reading this fine with read.csv and
writing back the same way.
do you know how I can make this work?? Is it even possible to do something
like
this?
Thank you in advance
Natasha



      [[alternative HTML version deleted]]


______________________________________________
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.




        [[alternative HTML version deleted]]

______________________________________________
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.

______________________________________________
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.

Reply via email to