[R] Extracting part of a factor

Jeff Newmiller jdnewmil at dcn.davis.ca.us
Fri Mar 4 21:46:19 CET 2016


I much prefer the factor function over the as.factor function for converting character to factor, since you can set the levels in the order you want them to be. 
-- 
Sent from my phone. Please excuse my brevity.

On March 4, 2016 10:07:27 AM PST, Sarah Goslee <sarah.goslee at gmail.com> wrote:
>As everyone has been telling you, as.factor().
>If you like the mutate approach, you can call as.factor(test$subject)
>to convert it.
>
>Here's a one-liner with reproducible data.
>
>
>testdata <- structure(list(subject = structure(1:6, .Label =
>c("001-002",
>"002-003", "003-004", "004-005", "005-006", "006-007"), class =
>"factor"),
>    group = structure(c(1L, 1L, 1L, 2L, 2L, 2L), .Label = c("boys",
>    "girls"), class = "factor"), wk1 = c(2L, 7L, 9L, 5L, 2L,
>    1L), wk2 = c(3L, 6L, 4L, 7L, 6L, 4L), wk3 = c(4L, 5L, 6L,
>   8L, 3L, 7L), wk4 = c(5L, 4L, 1L, 9L, 8L, 4L)), .Names = c("subject",
>"group", "wk1", "wk2", "wk3", "wk4"), class = "data.frame", row.names =
>c(NA,
>-6L))
>
>testdata$subject <- as.factor(substring(as.character(testdata$subject),
>1, 3))
>
>> testdata
>  subject group wk1 wk2 wk3 wk4
>1     001  boys   2   3   4   5
>2     002  boys   7   6   5   4
>3     003  boys   9   4   6   1
>4     004 girls   5   7   8   9
>5     005 girls   2   6   3   8
>6     006 girls   1   4   7   4
>> str(testdata)
>'data.frame': 6 obs. of  6 variables:
> $ subject: Factor w/ 6 levels "001","002","003",..: 1 2 3 4 5 6
> $ group  : Factor w/ 2 levels "boys","girls": 1 1 1 2 2 2
> $ wk1    : int  2 7 9 5 2 1
> $ wk2    : int  3 6 4 7 6 4
> $ wk3    : int  4 5 6 8 3 7
> $ wk4    : int  5 4 1 9 8 4
>
>Sarah
>
>On Fri, Mar 4, 2016 at 1:00 PM, KMNanus <kmnanus at gmail.com> wrote:
>>
>> Here’s the dataset I’m working with, called test -
>>
>> subject group wk1 wk2 wk3 wk4 place
>> 001-002 boys 2 3 4 5
>> 002-003 boys 7 6 5 4
>> 003-004 boys 9 4 6 1
>> 004-005 girls 5 7 8 9
>> 005-006 girls 2 6 3 8
>> 006-007 girls 1 4 7 4
>>
>>
>> if I call mutate(test, place = substr(subject,1,3), “001 is the first
>observation in the place column
>>
>> But it’s a character and “subject” is a factor.  I need place to be a
>factor, too, but I need the observations to be ONLY the first three
>numbers of “subject.”
>>
>> Does that make my request more understandable?
>
>______________________________________________
>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.

	[[alternative HTML version deleted]]



More information about the R-help mailing list