On Jul 31, 2009, at 2:55 PM, PDXRugger wrote:
I must apoligize, as i want clear of what i wanted to occur. i dont want to count the occurences but rather recode them. I am trying to replace all of the values with the new coded values in Person_CAT. SO NP <- c(1, 1, 2,1, 1, 2, 2, 1, 4, 1, 0, 5, + 3, 3, 1, 5, 3, 5, 1, 6, 1, 2, 2, 2, + 4, 4, 1, 2, 1, 3, 3, 1, 2, 2, 1, 2, 1, 2, + 2, 3, 1, 1, 4, 4, 1, 1, 1, 2, 2, 2)and Person_CAT: 1, 1, 2, 1, 1, 2, 2, 1, 4, 1, NA, 4..... and so on. This task would easily be done in SPSS but i am trying to automate it using R. Ihope this is more clear,
Perhaps:?cut #with special attention to the "right" parameter which is set to TRUE by default.
> per_Cat <- cut(NP, breaks= c(1:4, Inf), right= FALSE) > per_Cat[1] [1,2) [1,2) [2,3) [1,2) [1,2) [2,3) [2,3) [1,2) [4,Inf) [1,2) <NA> [4,Inf) [13] [3,4) [3,4) [1,2) [4,Inf) [3,4) [4,Inf) [1,2) [4,Inf) [1,2) [2,3) [2,3) [2,3) [25] [4,Inf) [4,Inf) [1,2) [2,3) [1,2) [3,4) [3,4) [1,2) [2,3) [2,3) [1,2) [2,3) [37] [1,2) [2,3) [2,3) [3,4) [1,2) [1,2) [4,Inf) [4,Inf) [1,2) [1,2) [1,2) [2,3)
[49] [2,3) [2,3) Levels: [1,2) [2,3) [3,4) [4,Inf) > Per <- c( "1", "2", "3","4") > levels(per_Cat) <- Per > per_Cat[1] 1 1 2 1 1 2 2 1 4 1 <NA> 4 3 3 1 4 3 4 1 4 [21] 1 2 2 2 4 4 1 2 1 3 3 1 2 2 1 2 1 2 2 3
[41] 1 1 4 4 1 1 1 2 2 2 Levels: 1 2 3 4
Bill.Venables wrote:Here is a suggestion:Per <- c("NA", "1", "2", "3","4") NP <- c(1, 1, 2, 1, 1, 2, 2, 1, 4, 1, 0, 5,+ 3, 3, 1, 5, 3, 5, 1, 6, 1, 2, 2, 2, + 4, 4, 1, 2, 1, 3, 3, 1, 2, 2, 1, 2, 1, 2, + 2, 3, 1, 1, 4, 4, 1, 1, 1, 2, 2, 2)Person_CAT <- cut(NP, breaks = c(0:4, Inf)-0.5, labels = Per) table(Person_CAT)Person_CAT NA 1 2 3 4 1 19 15 6 9You should be aware, though, that items corresponding to the level "NA"will NOT be treated as missing. Bill Venables http://www.cmis.csiro.au/bill.venables/ -----Original Message-----From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org ]On Behalf Of PDXRugger Sent: Friday, 31 July 2009 9:54 AM To: r-help@r-project.org Subject: [R] truncating values into separate categories Hi all,Simple question which i thought i had the answer but it isnt so simplefor some reason. I am sure someone can easily help. I would like to categorize the values in NP into 1 of the five values in "Per", with the lastcategory("4") representing values >=4(hence 4:max(NP)). The problem isthatR is reading max(NP) as multiple values instead of range so the lengths ofthe labels and the breaks are not matching. Suggestions? Per <- c("NA", "1", "2", "3","4")NP=c(1 ,1 ,2 ,1, 1 ,2 ,2 ,1 ,4 ,1 ,0 ,5 ,3 ,3 ,1 ,5 ,3, 5, 1, 6, 1, 2, 2,2, 4, 4, 1, 2, 1, 3, 3, 1 ,2 ,2 ,1 ,2, 1, 2, 2, 3, 1, 1, 4, 4, 1, 1, 1, 2, 2, 2) Person_CAT <- cut(NP, breaks=c(0,1,2,3,4:max(NP)), labels=Per) --
David Winsemius, MD Heritage Laboratories West Hartford, CT ______________________________________________ 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.