[R] transforming a .csv file column names as per a particular column rows using R code

arun smartpink111 at yahoo.com
Sun Oct 14 20:29:07 CEST 2012


HI,
If you need the "Tool" column repeated,
Try this:
dat1<-read.table(text="
Tool Step_Number Data1 Data2 Data3
A 1 0 1 2
A 2 3 1 4  
A 3 2 1 3 
B 1 3 2 1 
B 2 1 2 3 
B 3 3 2 0 
",sep="",header=TRUE,stringsAsFactors=FALSE)   
 
dat3<-with(dat1,aggregate(dat1[,3:5],list(Tool=Tool),function(x) x))
dat3
#Tool Data1.1 Data1.2 Data1.3 Data2.1 Data2.2 Data2.3 Data3.1 Data3.2 Data3.3
#1    A       0       3       2       1       1       1       2       4       3
#2    B       3       1       3       2       2       2       1       3       0
dat4<-do.call(data.frame,lapply(lapply(dat3[,-1],function(x) x),function(x) cbind(Tool=dat3[,1],x)))
colnames(dat4)<-gsub(".*\\.(Tool)","\\1",gsub("[V]","",colnames(dat4)))
dat4[grepl("Data.*",colnames(dat4))]<-sapply(dat4[grepl("Data.*",colnames(dat4))],function(x)as.numeric(as.character(x)))
 dat4
#  Tool Data1.2 Data1.3 Data1.4 Tool Data2.2 Data2.3 Data2.4 Tool Data3.2
#1    A       0       3       2    A       1       1       1    A       2
#2    B       3       1       3    B       2       2       2    B       1
  Data3.3 Data3.4
1       4       3
2       3       0
 str(dat4)
#'data.frame':    2 obs. of  12 variables:
# $ Tool   : Factor w/ 2 levels "A","B": 1 2
# $ Data1.2: num  0 3
# $ Data1.3: num  3 1
 #$ Data1.4: num  2 3
 #$ Tool   : Factor w/ 2 levels "A","B": 1 2
 #$ Data2.2: num  1 2
 #$ Data2.3: num  1 2
 #$ Data2.4: num  1 2
# $ Tool   : Factor w/ 2 levels "A","B": 1 2
# $ Data3.2: num  2 1
# $ Data3.3: num  4 3
# $ Data3.4: num  3 0

A.K.




----- Original Message -----
From: siddu479 <onlyfordigitalstuff at gmail.com>
To: r-help at r-project.org
Cc: 
Sent: Sunday, October 14, 2012 12:13 PM
Subject: [R] transforming a .csv file column names as per a particular column rows using R code

Hello all,
I have a .csv file like below.
Tool,Step_Number,Data1,Data2... etc up to 100 columns.
A,1,0,1
A,2,3,1
A,3,2,1
.
.
B,1,3,2
B,2,1,2
B,3,3,2
.
.
...... so on upto 50 rows 
where the column "*Tool*" has distinct steps in second column
"*Step_Number*",but both have same entries in Step_Number column.
I want the output like below.

Tool_1,Data1_1,Data2_1,Tool_2,Data1_2,Data2_2,Tool_3,Data1_3,Data2_3... so
on
A,0,1,A,3,1,A,2,1
B,3,2,B,1,2,B,3,2
......
so on.

basically I am transposing entire data based on a specific column row values
and renaming the column headers.
I have a shell script based on awk which can do this task, but the script is
taking exceptionally higher processing time.

So I am looking for a script in R which can save the time.
"Please revert to me if the problem description is not clear."

Regards
Sidda




-----
Sidda
Business Analyst Lead
Applied Materials Inc.

--
View this message in context: http://r.789695.n4.nabble.com/transforming-a-csv-file-column-names-as-per-a-particular-column-rows-using-R-code-tp4646137.html
Sent from the R help mailing list archive at Nabble.com.

______________________________________________
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