Skip to content

subsetting levels of a vector

5 messages · simona mancini, Marc Schwartz, Rui Barradas +2 more

#
On Aug 10, 2012, at 4:07 AM, simona mancini <mancinisimona at yahoo.it> wrote:

            
Take a look at ?subset and ?"%in%, which can be used in this fashion:

  NewDF <- subset(DF, Electrode %in% c("FP1", "FP2", "F4"))

If the levels you do not want are few in number, it may be easier to use:

  NewDF <- subset(DF, !Electrode %in% c("Levels", "You", "Don't", "Want"))

Note the use of '!' before Electrode to negate the boolean logic.

Regards,

Marc Schwartz
#
subset should work fine.  My guess would be that Electrode is a character or factor variable.  Use str() to see what kind of variables you have in the data set.

If we call the data set dat1 this works. 
subset(dat1,  dat1$Electrode =="FP1" | dat1$Electrode  =="FP2" | dat1$Electrode == "F4")




John Kane
Kingston ON Canada
____________________________________________________________
FREE 3D MARINE AQUARIUM SCREENSAVER - Watch dolphins, sharks & orcas on your desktop!
#
Hi,

Try this:
dat <- read.table(text="
ParticipID??? ERP? Electrode
1??????? s1? 0.0370????? FP1
2??????? s2 35.0654????? FP2
3??????? s3 -3.3852??????? F4
4??????? s4? 2.6119??????? P3
5??????? s5? 0.1224??????? P4
6??????? s6 -5.3153??????? O1
7??????? s7 -3.88????????? F4
8??????? s8? -4.988??????? FP1? 

", header=TRUE)
str(d)

tomatch <- c("FP1", "FP2", "F4")
#You can use either one of these
dat[with(dat,Electrode%in%tomatch),]
dat[dat$Electrode%in%tomatch,]
#or
dat2<-within(dat,{Electrode=Electrode%in%tomatch})
dat[dat2$Electrode==TRUE,]
#? ParticipID???? ERP Electrode
#1???????? s1? 0.0370?????? FP1
#2???????? s2 35.0654?????? FP2
#3???????? s3 -3.3852??????? F4
#7???????? s7 -3.8800??????? F4
#8???????? s8 -4.9880?????? FP1

A.K.




----- Original Message -----
From: simona mancini <mancinisimona at yahoo.it>
To: "r-help at r-project.org" <r-help at r-project.org>
Cc: 
Sent: Friday, August 10, 2012 5:07 AM
Subject: [R] subsetting levels of a vector

Hi,


I need to subset different levels of vector in a dataset to create a new dataframe that contains only these. These observations are not numerical, so I can't use the subset() function (at least this is the response I get from R).
Suppose the dataframe looks like this:



? ParticipID??? ERP?? Electrode
1???????? s1? 0.0370?????? FP1
2???????? s2 35.0654?????? FP2
3???????? s3 -3.3852??????? F4
4???????? s4? 2.6119??????? P3
5???????? s5? 0.1224??????? P4
6???????? s6 -5.3153??????? O1


I want to create a subset of the dataframe with only the FP1, FP2, F4 levels of Electrode, how do I do? 
(actually the levels I have to filter are much more than these three, but this is just to give an example).

I know this is a trivial question, but I am still getting familiar with R...

Thanks a lot,

s.

??? [[alternative HTML version deleted]]


______________________________________________
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.