An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20120810/996f7c76/attachment.pl>
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:
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.
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
An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20120810/9e679682/attachment.pl>
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
-----Original Message----- From: mancinisimona at yahoo.it Sent: Fri, 10 Aug 2012 10:07:31 +0100 (BST) To: r-help at r-project.org 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.
____________________________________________________________ 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.