[R] trouble converting an array to a dataframe

hadley wickham h.wickham at gmail.com
Thu Jan 22 05:40:40 CET 2009


On Tue, Jan 20, 2009 at 11:10 PM, Christopher W. Ryan
<cryan at binghamton.edu> wrote:
> I start with a dataframe called xrays. It contains scores on films from
> each of two radiologists. It is in "long" format. I used the reshape
> package to melt a data frame and then cast it into "wide" format, one
> line for each patient (identified by redlognumb) with scores from both
> radiologists for a given patient on the same line.
>
> I named the result of the casting xrays.data. It is an array. I'd like
> it to be a three-variable dataframe, with one column for scores from
> each of two radiologists, and one column for redlognumb (because I will
> then need to merge it with another dataframe that has a column named
> redlognumb.) As you can see below, the data.frame() function turns
> xrays.data into a two-variable dataframe. How can I get three columns
> (or variables) into my final dataframe?

It sounds to me like this final data frame would just be equivalent to
your initial unmolten data.  What's the difference?

Hadley

PS. The melt function takes an na.rm argument that will remove any
missing values.

>
> Thanks.
>
>
>> head(xrays)
>  redlognumb radiologis barrtotal
> 1          3          2        13
> 2          4          2        16
> 3          5          2        10
> 4          6          2        11
> 5          9          2        NA
> 6         10          2        NA
>
>>melted.xrays <- melt(xrays, id=c("redlognumb","radiologis"))
>>
>> head(melted.xrays <- na.omit(melt(xrays,
> id=c("redlognumb","radiologis"))))
>
>  redlognumb radiologis  variable value
> 1          3          2 barrtotal    13
> 2          4          2 barrtotal    16
> 3          5          2 barrtotal    10
> 4          6          2 barrtotal    11
> 7          1          1 barrtotal    11
> 8          2          1 barrtotal     2
>>
>
>> cast(melted.xrays.2, redlognumb~radiologis~variable)
>
>          radiologis
> redlognumb  1  2
>        1  11 NA
>        2   2 NA
>        3  12 13
>        4  16 16
>        5  12 10
>       . .  . cut off for brevity . . .
>
>> str(xrays.data)
>  int [1:42, 1:2, 1] 11 2 12 16 12 13 18 8 19 14 ...
>  - attr(*, "dimnames")=List of 3
>  ..$ redlognumb: Named chr [1:42] "1" "2" "3" "4" ...
>  .. ..- attr(*, "names")= chr [1:42] "1" "2" "3" "5" ...
>  ..$ radiologis: Named chr [1:2] "1" "2"
>  .. ..- attr(*, "names")= chr [1:2] "1" "80"
>  ..$ variable  : Named chr "barrtotal"
>  .. ..- attr(*, "names")= chr "1"
>> data.frame(xrays.data)
>   X1.barrtotal X2.barrtotal
> 1            11           NA
> 2             2           NA
> 3            12           13
> 4            16           16
> 5            12           10
> 6            13           11
> 7            18           NA
> 8             8           NA
> . . . . cut off for brevity . . .
>
>
> --
> Christopher W. Ryan, MD
> SUNY Upstate Medical University Clinical Campus at Binghamton
> 40 Arch Street, Johnson City, NY  13790
> cryanatbinghamtondotedu
> PGP public keys available at http://home.stny.rr.com/ryancw/
>
> "If you want to build a ship, don't drum up the men to gather wood,
> divide the work and give orders. Instead, teach them to yearn for the
> vast and endless sea."  [Antoine de St. Exupery]
>
> ______________________________________________
> R-help at 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.
>



-- 
http://had.co.nz/




More information about the R-help mailing list