Hello all, I am trying to use the tapply function to sum some values and change the column names of the resulting vector. I input Emp Et 1 10565 ACC 2 7515 ADM 3 625 AGF 4 6243 CNS 5 12721 EDU 6 3924 FIN 7 18140 HLH 8 3686 INF 9 15841 MFG 10 243 MIN 11 1864 MNG 12 4664 OSV 13 5496 PRF 14 4988 PUB 15 2166 REC 16 2153 REL 17 16082 RTL 18 3582 TRN 19 757 UTL 20 5818 WHL and i want to aggregate certain types based on the following matches Et Em 1 AGF AFREMP 2 MIN MINEMP 3 UTL TCPEMP 4 CNS CONEMP 5 MFG MFGEMP 6 WHL WSTEMP 7 RTL RETEMP 8 TRN TCPEMP 9 INF SVCEMP 10 FIN FINEMP 11 REL FINEMP 12 PRF SVCEMP 13 MNG FINEMP 14 ADM SVCEMP 15 EDU SVCEMP 16 HLH SVCEMP 17 REC SVCEMP 18 ACC SVCEMP 19 RST SVCEMP 20 OSV SVCEMP 21 PUB GVTEMP but the last value in my result is NA when it should be 5818. so my actual result is AFREMP CONEMP FINEMP GVTEMP MFGEMP MINEMP RETEMP SVCEMP TCPEMP WSTEMP 625 6243 7941 4988 15841 243 3582 81035 6575 NA I have rechecks to make sure there isnt a simple labeling error but i havent found anything. Below is test code. Et<-c("AGF","MIN","UTL","CNS","MFG","WHL","RTL","TRN","INF","FIN","REL", "PRF","MNG","ADM","EDU","HLH","REC","ACC","RST","OSV","PUB") Em<-c("AFREMP","MINEMP","TCPEMP","CONEMP","MFGEMP","WSTEMP","RETEMP","TCPEMP", "SVCEMP","FINEMP","FINEMP","SVCEMP","FINEMP","SVCEMP","SVCEMP","SVCEMP","SVCEMP", "SVCEMP","SVCEMP","SVCEMP","GVTEMP") EtToEm..<-data.frame(Et,Em) Emp<-c(10565,7515,625,6243,12721,3924,18140,3686,15841,243,1864,4664,5496,4988 ,2166,2153,16082,3582,757,5818) Et.t<-c("ACC","ADM","AGF","CNS","EDU","FIN","HLH","INF","MFG","MIN" ,"MNG","OSV" ,"PRF","PUB","REC","REL","RTL","TRN","UTL","WHL") Emp.Et<-data.frame(Emp,Et.t) names(Emp.Et)[2]<-"Et" Emp.Et.Em<-as.vector(Emp.Et$Em) names(Emp.Et.Em) <- Emp.Et$Et EmpEt.Em <- tapply(Emp.Et.Em[EtToEm..$Et], EtToEm..$Em, sum) -- View this message in context: http://n4.nabble.com/Issue-using-tapply-tp1289681p1289681.html Sent from the R help mailing list archive at Nabble.com.
I think the problem is that there is no value for RST in Emp.Et.Em. -Ista On Mon, Jan 25, 2010 at 6:57 PM, LCOG1 <jroll at lcog.org> wrote:> > Hello all, > ? I am trying to use the tapply function to sum some values and change the > column names of the resulting vector. > > I input > ? ? Emp ?Et > 1 ?10565 ACC > 2 ? 7515 ADM > 3 ? ?625 AGF > 4 ? 6243 CNS > 5 ?12721 EDU > 6 ? 3924 FIN > 7 ?18140 HLH > 8 ? 3686 INF > 9 ?15841 MFG > 10 ? 243 MIN > 11 ?1864 MNG > 12 ?4664 OSV > 13 ?5496 PRF > 14 ?4988 PUB > 15 ?2166 REC > 16 ?2153 REL > 17 16082 RTL > 18 ?3582 TRN > 19 ? 757 UTL > 20 ?5818 WHL > > and i want to aggregate certain types based on the following matches > > ? ?Et ? ? Em > 1 ?AGF AFREMP > 2 ?MIN MINEMP > 3 ?UTL TCPEMP > 4 ?CNS CONEMP > 5 ?MFG MFGEMP > 6 ?WHL WSTEMP > 7 ?RTL RETEMP > 8 ?TRN TCPEMP > 9 ?INF SVCEMP > 10 FIN FINEMP > 11 REL FINEMP > 12 PRF SVCEMP > 13 MNG FINEMP > 14 ADM SVCEMP > 15 EDU SVCEMP > 16 HLH SVCEMP > 17 REC SVCEMP > 18 ACC SVCEMP > 19 RST SVCEMP > 20 OSV SVCEMP > 21 PUB GVTEMP > > but the last value in my result is NA when it should be 5818. so my actual > result is > AFREMP CONEMP FINEMP GVTEMP MFGEMP MINEMP RETEMP SVCEMP TCPEMP WSTEMP > ? 625 ? ? ? 6243 ? ? 7941 ? ? ?4988 ? ?15841 ? ? 243 ? ?3582 ? ? 81035 > 6575 ? ? NA > > I have rechecks to make sure there isnt a simple labeling error but i havent > found anything. ?Below is test code. > > Et<-c("AGF","MIN","UTL","CNS","MFG","WHL","RTL","TRN","INF","FIN","REL", > "PRF","MNG","ADM","EDU","HLH","REC","ACC","RST","OSV","PUB") > > Em<-c("AFREMP","MINEMP","TCPEMP","CONEMP","MFGEMP","WSTEMP","RETEMP","TCPEMP", > "SVCEMP","FINEMP","FINEMP","SVCEMP","FINEMP","SVCEMP","SVCEMP","SVCEMP","SVCEMP", > "SVCEMP","SVCEMP","SVCEMP","GVTEMP") > > EtToEm..<-data.frame(Et,Em) > > Emp<-c(10565,7515,625,6243,12721,3924,18140,3686,15841,243,1864,4664,5496,4988 > ,2166,2153,16082,3582,757,5818) > > Et.t<-c("ACC","ADM","AGF","CNS","EDU","FIN","HLH","INF","MFG","MIN" > ,"MNG","OSV" > ,"PRF","PUB","REC","REL","RTL","TRN","UTL","WHL") > > Emp.Et<-data.frame(Emp,Et.t) > names(Emp.Et)[2]<-"Et" > > Emp.Et.Em<-as.vector(Emp.Et$Em) > names(Emp.Et.Em) <- Emp.Et$Et > > EmpEt.Em <- tapply(Emp.Et.Em[EtToEm..$Et], EtToEm..$Em, sum) > > -- > View this message in context: http://n4.nabble.com/Issue-using-tapply-tp1289681p1289681.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. >-- Ista Zahn Graduate student University of Rochester Department of Clinical and Social Psychology http://yourpsyche.org
Try this: tapply(Emp.Et.Em[EtToEm..$Et], EtToEm..$Em, sum, na.rm = TRUE) On Mon, Jan 25, 2010 at 4:57 PM, LCOG1 <jroll at lcog.org> wrote:> > Hello all, > ? I am trying to use the tapply function to sum some values and change the > column names of the resulting vector. > > I input > ? ? Emp ?Et > 1 ?10565 ACC > 2 ? 7515 ADM > 3 ? ?625 AGF > 4 ? 6243 CNS > 5 ?12721 EDU > 6 ? 3924 FIN > 7 ?18140 HLH > 8 ? 3686 INF > 9 ?15841 MFG > 10 ? 243 MIN > 11 ?1864 MNG > 12 ?4664 OSV > 13 ?5496 PRF > 14 ?4988 PUB > 15 ?2166 REC > 16 ?2153 REL > 17 16082 RTL > 18 ?3582 TRN > 19 ? 757 UTL > 20 ?5818 WHL > > and i want to aggregate certain types based on the following matches > > ? ?Et ? ? Em > 1 ?AGF AFREMP > 2 ?MIN MINEMP > 3 ?UTL TCPEMP > 4 ?CNS CONEMP > 5 ?MFG MFGEMP > 6 ?WHL WSTEMP > 7 ?RTL RETEMP > 8 ?TRN TCPEMP > 9 ?INF SVCEMP > 10 FIN FINEMP > 11 REL FINEMP > 12 PRF SVCEMP > 13 MNG FINEMP > 14 ADM SVCEMP > 15 EDU SVCEMP > 16 HLH SVCEMP > 17 REC SVCEMP > 18 ACC SVCEMP > 19 RST SVCEMP > 20 OSV SVCEMP > 21 PUB GVTEMP > > but the last value in my result is NA when it should be 5818. so my actual > result is > AFREMP CONEMP FINEMP GVTEMP MFGEMP MINEMP RETEMP SVCEMP TCPEMP WSTEMP > ? 625 ? ? ? 6243 ? ? 7941 ? ? ?4988 ? ?15841 ? ? 243 ? ?3582 ? ? 81035 > 6575 ? ? NA > > I have rechecks to make sure there isnt a simple labeling error but i havent > found anything. ?Below is test code. > > Et<-c("AGF","MIN","UTL","CNS","MFG","WHL","RTL","TRN","INF","FIN","REL", > "PRF","MNG","ADM","EDU","HLH","REC","ACC","RST","OSV","PUB") > > Em<-c("AFREMP","MINEMP","TCPEMP","CONEMP","MFGEMP","WSTEMP","RETEMP","TCPEMP", > "SVCEMP","FINEMP","FINEMP","SVCEMP","FINEMP","SVCEMP","SVCEMP","SVCEMP","SVCEMP", > "SVCEMP","SVCEMP","SVCEMP","GVTEMP") > > EtToEm..<-data.frame(Et,Em) > > Emp<-c(10565,7515,625,6243,12721,3924,18140,3686,15841,243,1864,4664,5496,4988 > ,2166,2153,16082,3582,757,5818) > > Et.t<-c("ACC","ADM","AGF","CNS","EDU","FIN","HLH","INF","MFG","MIN" > ,"MNG","OSV" > ,"PRF","PUB","REC","REL","RTL","TRN","UTL","WHL") > > Emp.Et<-data.frame(Emp,Et.t) > names(Emp.Et)[2]<-"Et" > > Emp.Et.Em<-as.vector(Emp.Et$Em) > names(Emp.Et.Em) <- Emp.Et$Et > > EmpEt.Em <- tapply(Emp.Et.Em[EtToEm..$Et], EtToEm..$Em, sum) > > -- > View this message in context: http://n4.nabble.com/Issue-using-tapply-tp1289681p1289681.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. >-- Henrique Dallazuanna Curitiba-Paran?-Brasil 25? 25' 40" S 49? 16' 22" O
Ista you have suggested the correct solution, i didnt htink it would matter not having that value but it did. Things work as they should now, thankyou -- View this message in context: http://n4.nabble.com/Issue-using-tapply-tp1289681p1289764.html Sent from the R help mailing list archive at Nabble.com.