I am trying this as you mentioned and getting an error which i cant fix
do you know where is the problem? 


> df2[is.na(df2)] <- 0
> df2
          X age no. age.1 no..1 age.2 no..2 age.3 no..3 age.4 no..4
1   center1   3   9     6     4     9     1    10     1     0     0
2   center2   5   3     9     2     0     0     0     0     0     0
3   center3   2   2     5     8     7     3     0     0     0     0
4   center4   1  12     4     7     8     3     9     1     0     0
5   center5   6   9     8     5     0     0     0     0     0     0
6   center6   4   8     0     0     0     0     0     0     0     0
7   center7   9   5     0     0     0     0     0     0     0     0
8   center8   4   7     6     3     7     1     8     1     9     2
9   center9   7   3     9     1    10     2     0     0     0     0
10 center10  10   5     0     0     0     0     0     0     0     0
> df3 <- rbind(df2, data.frame(center=1,time=1, age=1:max(df2$age), n=0))
Error in rbind(deparse.level, ...) : 
  numbers of columns of arguments do not match


Natatsha



________________________________
From: Dennis Murphy <djmu...@gmail.com>
To: David Winsemius <dwinsem...@comcast.net>
Cc: r-help@r-project.org
Sent: Sun, 12 September, 2010 23:16:47
Subject: Re: [R] reshape matrix entities to columns

Thanks, David; I overlooked that part.

Dennis

On Sun, Sep 12, 2010 at 1:18 PM, David Winsemius <dwinsem...@comcast.net>wrote:

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

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

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

Reply via email to