On Sat, 15 Aug 2009 09:20:04 +0200, Dieter Menne
<dieter.me...@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.
--
______________________________________________
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.