[R] transforming a .csv file column names as per a particular column rows using R code
David L Carlson
dcarlson at tamu.edu
Sun Oct 14 23:47:19 CEST 2012
You can also get the Tool column repeated by tricking reshape() into letting
you use Tool in the v.name and idvar arguments:
> dta1 <- read.csv( text=
+ "Tool,Step_Number,Data1,Data2
+ A,1,0,1
+ A,2,3,2
+ A,3,2,3
+ B,1,3,2
+ B,2,1,2
+ B,3,3,2
+ ")
# Repeat the first column. R will append .1 to the second copy.
> dta2 <- reshape(dta1[, c(1, 1:4)], v.names=c("Tool", "Data1", "Data2"),
timevar="Step_Number", idvar="Tool.1", direction="wide")
> rownames(dta2) <- NULL
> colnames(dta2) <- gsub("\\.", "_", colnames(dta2))
> dta2
Tool_1 Data1_1 Data2_1 Tool_2 Data1_2 Data2_2 Tool_3 Data1_3 Data2_3
1 A 0 1 A 3 2 A 2 3
2 B 3 2 B 1 2 B 3 2
----------------------------------------------
David L Carlson
Associate Professor of Anthropology
Texas A&M University
College Station, TX 77843-4352
> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
> project.org] On Behalf Of arun
> Sent: Sunday, October 14, 2012 1:29 PM
> To: siddu479
> Cc: R help
> Subject: Re: [R] transforming a .csv file column names as per a
> particular column rows using R code
>
> 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.ch
> aracter(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.
>
>
> ______________________________________________
> 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