[R] data.frame tall skinny transformation

Phil Spector spector at stat.berkeley.edu
Sun Oct 25 05:29:04 CET 2009


Michael -
    It sounds like there something different in the
parts of the data you're not including.  If another
poster's suggestion of specifying analysis variables
instead of id variables doesn't work, and you can send
me the data set, I'd be happy to take a look.
                                      - Phil


On Sat, 24 Oct 2009, Michael Jones wrote:

> If I make the data from smaller:
>
> featureDataHead = head(featureData)
> featureDataHead = featureDataHead[ , 1:4]
> melt(featureDataHead,id.var='feature',variable_name='cell.line')
>
> It works fine
>
>
>
> On Sat, Oct 24, 2009 at 1:54 PM, Michael Jones <mdjones71 at gmail.com> wrote:
>> Thanks Phil,
>>
>> That worked great for the test case below but when I tried it on a
>> really big data.frame I get the error
>>
>> $ melt(featureData,id.var='feature',variable_name='cell.line')
>> Error in data.frame(ids, x, data[, x]) :
>>  arguments imply differing number of rows: 1312, 1, 0
>>
>> featureData has the same structure as x but just with more 'cell.line'
>> columns and features.
>>
>>
>>
>> On Fri, Oct 23, 2009 at 7:52 PM, Phil Spector <spector at stat.berkeley.edu> wrote:
>>> Michael -
>>>   I think the easiest way is to use the melt function
>>> from the reshape package:
>>>
>>>> x
>>>
>>>   feature  5637 1321N1
>>> 1 feature1 -0.56  -0.93
>>> 2 feature2 -0.91  -0.94
>>> 3 feature3  0.44  -0.25
>>>>
>>>> library(reshape)
>>>> melt(x,id.var='feature',variable_name='cell.line')
>>>
>>>   feature cell.line value
>>> 1 feature1      5637 -0.56
>>> 2 feature2      5637 -0.91
>>> 3 feature3      5637  0.44
>>> 4 feature1    1321N1 -0.93
>>> 5 feature2    1321N1 -0.94
>>> 6 feature3    1321N1 -0.25
>>>
>>>
>>>                                        - Phil Spector
>>>                                         Statistical Computing Facility
>>>                                         Department of Statistics
>>>                                         UC Berkeley
>>>                                         spector at stat.berkeley.edu
>>>
>>>
>>> On Fri, 23 Oct 2009, Michael Jones wrote:
>>>
>>>> Hi,
>>>>
>>>> I have a data.frame that looks something like this.
>>>>
>>>>
>>>> feature   5637                1321N1
>>>> feature1 -0.568750616 -0.934748758
>>>> feature2 -0.913080902 -0.941455172
>>>> feature3 0.442477294 -0.257921866
>>>>
>>>> I want to change it to look like this.
>>>>
>>>> feature      cell.line     value
>>>> feature1    5637   -0.568750616
>>>> feature2    5637   -0.913080902
>>>> feature3    5637   0.442477294
>>>> feature1    1321N1  -0.934748758
>>>> feature2    1321N1 -0.941455172
>>>> feature3    1321N1  -0.257921866
>>>>
>>>>
>>>> I have tried to do it with for loops but it is very slow.
>>>>
>>>> # Make Feature data tall skinny
>>>> tsFeatures = c()
>>>> tsCellLines = c()
>>>> tsValues = c()
>>>>
>>>> for(aFeature in as.character(featureData$feature)){
>>>>     print(aFeature)
>>>>     for(cellLine in cellLines){
>>>>           tsCellLines = c(tsCellLines, as.character(cellLine))
>>>>           tsValues = c(tsValues, as.numeric(subset(featureData,
>>>> feature == aFeature, select = c(which(colnames(featureData) %in%
>>>> cellLine)))))
>>>>           tsFeatures = c(tsFeatures, aFeature)
>>>>     }
>>>> }
>>>> tsFeatureData = data.frame(features = tsFeatures, cell.line =
>>>> tsCellLines, value=tsValues)
>>>>
>>>> ______________________________________________
>>>> 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.
>>>
>>
>
> ______________________________________________
> 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.
>


More information about the R-help mailing list