[R] Make 2nd col of 2-col df into header row of same df then adjust col1 data display
Jeff Newmiller
jdnewmil at dcn.davis.ca.us
Thu Dec 18 17:02:29 CET 2014
No guarantees on "best"... but one way using base R could be:
# Note that "CaseID" is actually not a valid PViol.Type as you had it
PViol.Type <- c( "BW.BackWages"
, "LD.Liquid_Damages"
, "MW.Minimum_Wage"
, "OT.Overtime"
, "RK.Records_FLSA"
, "V.Poster_Other"
, "AS.Age"
, "BW.WHMIS_BackWages"
, "HS.Hours"
, "OA.HazOccupationAg"
, "ON.HazOccupationNonAg"
, "R3.Reg3AgeOccupation"
, "RK.Records_CL"
, "V.Other" )
# explicitly specifying all levels to the factor insures a complete
# set of column outputs regardless of what is in the input
PViol.Type.Per.Case.Original <-
data.frame( CaseID
, Primary.Viol.Type=factor( Primary.Viol.Type
, levels=PViol.Type ) )
tmp <- table( PViol.Type.Per.Case.Original )
ans <- data.frame( CaseID=rownames( tmp )
, as.data.frame( ifelse( 0==tmp, NA, 1 ) )
)
On Wed, 17 Dec 2014, bcrombie wrote:
> # I have a dataframe that contains 2 columns:
> CaseID <- c('1015285',
> '1005317',
> '1012281',
> '1015285',
> '1015285',
> '1007183',
> '1008833',
> '1015315',
> '1015322',
> '1015285')
>
> Primary.Viol.Type <- c('AS.Age',
> 'HS.Hours',
> 'HS.Hours',
> 'HS.Hours',
> 'RK.Records_CL',
> 'OT.Overtime',
> 'OT.Overtime',
> 'OT.Overtime',
> 'V.Poster_Other',
> 'V.Poster_Other')
>
> PViol.Type.Per.Case.Original <- data.frame(CaseID,Primary.Viol.Type)
>
> # CaseID?s can be repeated because there can be up to 14 Primary.Viol.Type?s
> per CaseID.
>
> # I want to transform this dataframe into one that has 15 columns, where the
> first column is CaseID, and the rest are the 14 primary viol. types. The
> CaseID column will contain a list of the unique CaseID?s (no replicates) and
> for each of their rows, there will be a ?1? under a column corresponding to
> a primary violation type recorded for that CaseID. So, technically, there
> could be zero to 14 ?1?s? in a CaseID?s row.
>
> # For example, the row for CaseID '1015285' above would have a ?1? under
> ?AS.Age?, ?HS.Hours?, ?RK.Records_CL?, and ?V.Poster_Other?, but have "NA"
> under the rest of the columns.
>
> PViol.Type <- c("CaseID",
> "BW.BackWages",
> "LD.Liquid_Damages",
> "MW.Minimum_Wage",
> "OT.Overtime",
> "RK.Records_FLSA",
> "V.Poster_Other",
> "AS.Age",
> "BW.WHMIS_BackWages",
> "HS.Hours",
> "OA.HazOccupationAg",
> "ON.HazOccupationNonAg",
> "R3.Reg3AgeOccupation",
> "RK.Records_CL",
> "V.Other")
>
> PViol.Type.Columns <- t(data.frame(PViol.Type)
>
> # What is the best way to do this in R?
>
>
>
>
> --
> View this message in context: http://r.789695.n4.nabble.com/Make-2nd-col-of-2-col-df-into-header-row-of-same-df-then-adjust-col1-data-display-tp4700878.html
> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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.
---------------------------------------------------------------------------
Jeff Newmiller The ..... ..... Go Live...
DCN:<jdnewmil at dcn.davis.ca.us> Basics: ##.#. ##.#. Live Go...
Live: OO#.. Dead: OO#.. Playing
Research Engineer (Solar/Batteries O.O#. #.O#. with
/Software/Embedded Controllers) .OO#. .OO#. rocks...1k
More information about the R-help
mailing list