[R] re ading transposed data in read.csv
Vitalie S.
vitosmail at rambler.ru
Sat Aug 15 10:20:13 CEST 2009
On Sat, 15 Aug 2009 09:20:04 +0200, Dieter Menne
<dieter.menne at menne-biomed.de> wrote:
>
>
>
> sandsky wrote:
>>
>> I have a data set (csv); e.g.,
>>
>> ID samp1 samp2 samp3 samp4
>> G1 23 32 12 87
>> G2 85 45 49 76
>> G3 12 46 39 28
>> G4 73 26 18 13
>>
>> and read it:
>>
>> data1<-(read.csv("Datafolder/rawdata.csv",header=T))
>>
>> It is fine with reading as above, but, if it is read as transposed
>> values
>> like:
>>
>> data1<-t(read.csv("Datafolder/rawdata.csv",header=T))
>>
>> ID "G1" "G2" "G3" "G4"
>> samp1 "23" "85" "12" "73"
>> ...
>>
>> all values are shown in " ".
>>
>> How to get this transposed data as numerical values?
>>
>>
>
> Because ID is not numeric, and in a data frame each column must have the
> same data type. The least common denominator is "character".
>
> Written explicitly, you have to transpose the numeric part, and paste in
> the
> names later. This could be shortened, but the example below gives the
> idea.
>
> Dieter
>
> d = data.frame(ID=c("G1","G2"), samp1=1:2,samp2=5:6)
> d
> t(d)
> dt = as.data.frame(t(d[-1]))
> names(dt)= d[,1]
>
>
>
As Dieter has already said elements in each of column of a data.frame must
be of the same type. But this is probably what you really after:
> tdf <- read.table(textConnection("ID samp1 samp2 samp3 samp4
+ G1 23 32 12 87
+ G2 85 45 49 76
+ G3 12 46 39 28
+ G4 73 26 18 13
+ "), header=T)
> library(reshape)
> recast(tdf, ...~ID)
Using ID as id variables
variable G1 G2 G3 G4
1 samp1 23 85 12 73
2 samp2 32 45 46 26
3 samp3 12 49 39 18
4 samp4 87 76 28 13
>
see reshape and plyr packages for this kind of data manipulation.
-Vitalie.
--
More information about the R-help
mailing list