Hello,
I have two very basic questions (console attached):
1) What am I getting an error message for # 5 and # 7 ?
2) How to fix the code?
I would appreciate receiving your help.
Thanks,
Pradip Muhuri
###### Reproducible Example #####
N <- 100
set.seed(13)
df<-data.frame(matrix(sample(c(1:10),N, replace=TRUE),ncol=5))
keep_var <- c("X1", "X2")
drop_var <- c("X3", "X4", "X5")
df[df$X1>=8,] [,1:2] #1
df[df$X1>=8,] [,-c(3,4,5)] #2
df[df$X1>=8,] [,c(-3,-4,-5)] #3
df[df$X1>=8,] [,c("X1", "X2")] #4
df[df$X1>=8,] [,-c("X3", "X4", "X5")] #5 DOES NOT WORK
df[df$X1>=8,] [,keep_var] #6
df[df$X1>=8,] [, !drop_var] #7 DOES NOT WORK
subsetting - questions
7 messages · Muhuri, Pradip (SAMHSA/CBHSQ), Jorge I Velez, arun +1 more
An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20121124/f4223fcc/attachment.pl>
HI,
This should work:
df[df$X1>=8,][-which(names(df)%in% c("X3","X4","X5"))]
#?? X1 X2
#1?? 8? 2
#5? 10? 1
#8?? 8? 5
#9?? 9? 4
#12? 9? 5
#13? 9 10
#19? 9? 8
?df[df$X1>=8,][,!names(df)%in%drop_var]
#?? X1 X2
#1?? 8? 2
#5? 10? 1
#8?? 8? 5
#9?? 9? 4
#12? 9? 5
#13? 9 10
#19? 9? 8
A.K.
----- Original Message -----
From: "Muhuri, Pradip (SAMHSA/CBHSQ)" <Pradip.Muhuri at samhsa.hhs.gov>
To: "r-help at r-project.org" <r-help at r-project.org>
Cc:
Sent: Friday, November 23, 2012 9:55 PM
Subject: [R] subsetting - questions
Hello,
I have two very basic questions (console attached):
1) What am I getting an error message for? # 5 and # 7 ?
2) How to fix the code?
I would appreciate receiving your help.
Thanks,
Pradip Muhuri
###### Reproducible Example? #####
N <- 100
set.seed(13)
df<-data.frame(matrix(sample(c(1:10),N, replace=TRUE),ncol=5))
keep_var <- c("X1", "X2")
drop_var <- c("X3", "X4", "X5")
df[df$X1>=8,] [,1:2]? ? ? ? ? ? ? ? ? #1
df[df$X1>=8,] [,-c(3,4,5)]? ? ? ? ? ? #2
df[df$X1>=8,] [,c(-3,-4,-5)]? ? ? ? ? #3
df[df$X1>=8,] [,c("X1", "X2")]? ? ? ? #4
df[df$X1>=8,] [,-c("X3", "X4", "X5")]? #5? DOES NOT WORK
df[df$X1>=8,] [,keep_var]? ? ? ? ? ? ? #6
df[df$X1>=8,] [, !drop_var]? ? ? ? ? ? #7? DOES NOT WORK
______________________________________________
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.
Hi Arun, Thank you so much for your help. Pradip
From: arun [smartpink111 at yahoo.com]
Sent: Friday, November 23, 2012 10:15 PM
To: Muhuri, Pradip (SAMHSA/CBHSQ)
Cc: R help
Subject: Re: [R] subsetting - questions
Sent: Friday, November 23, 2012 10:15 PM
To: Muhuri, Pradip (SAMHSA/CBHSQ)
Cc: R help
Subject: Re: [R] subsetting - questions
HI,
This should work:
df[df$X1>=8,][-which(names(df)%in% c("X3","X4","X5"))]
# X1 X2
#1 8 2
#5 10 1
#8 8 5
#9 9 4
#12 9 5
#13 9 10
#19 9 8
df[df$X1>=8,][,!names(df)%in%drop_var]
# X1 X2
#1 8 2
#5 10 1
#8 8 5
#9 9 4
#12 9 5
#13 9 10
#19 9 8
A.K.
----- Original Message -----
From: "Muhuri, Pradip (SAMHSA/CBHSQ)" <Pradip.Muhuri at samhsa.hhs.gov>
To: "r-help at r-project.org" <r-help at r-project.org>
Cc:
Sent: Friday, November 23, 2012 9:55 PM
Subject: [R] subsetting - questions
Hello,
I have two very basic questions (console attached):
1) What am I getting an error message for # 5 and # 7 ?
2) How to fix the code?
I would appreciate receiving your help.
Thanks,
Pradip Muhuri
###### Reproducible Example #####
N <- 100
set.seed(13)
df<-data.frame(matrix(sample(c(1:10),N, replace=TRUE),ncol=5))
keep_var <- c("X1", "X2")
drop_var <- c("X3", "X4", "X5")
df[df$X1>=8,] [,1:2]? #1
df[df$X1>=8,] [,-c(3,4,5)]? #2
df[df$X1>=8,] [,c(-3,-4,-5)]? #3
df[df$X1>=8,] [,c("X1", "X2")]? #4
df[df$X1>=8,] [,-c("X3", "X4", "X5")]? #5 DOES NOT WORK
df[df$X1>=8,] [,keep_var]? #6
df[df$X1>=8,] [, !drop_var]? #7 DOES NOT WORK
______________________________________________
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.
On 2012-11-23 18:55, Muhuri, Pradip (SAMHSA/CBHSQ) wrote:
Hello,
I have two very basic questions (console attached):
1) What am I getting an error message for # 5 and # 7 ?
2) How to fix the code?
I would appreciate receiving your help.
Thanks,
Pradip Muhuri
###### Reproducible Example #####
N <- 100
set.seed(13)
df<-data.frame(matrix(sample(c(1:10),N, replace=TRUE),ncol=5))
keep_var <- c("X1", "X2")
drop_var <- c("X3", "X4", "X5")
df[df$X1>=8,] [,1:2] #1
df[df$X1>=8,] [,-c(3,4,5)] #2
df[df$X1>=8,] [,c(-3,-4,-5)] #3
df[df$X1>=8,] [,c("X1", "X2")] #4
df[df$X1>=8,] [,-c("X3", "X4", "X5")] #5 DOES NOT WORK
df[df$X1>=8,] [,keep_var] #6
df[df$X1>=8,] [, !drop_var] #7 DOES NOT WORK
To see what's wrong, just print the problematic part:
-c("X3", "X4", "X5")
You can't negate a character vector; you have to have a numeric vector.
And
!drop_var
doesn't work because you need something that evaluates to a logical
value if you want to "!" it.
This will do it:
df[df$X1>=8,] [, !names(df) %in% drop_var]
Or use the subset() function, as Jorge suggests.
Peter Ehlers
Hi Jorge, I could use subset(). But, I wanted to minimize coding. Thanks, Pradip
From: Jorge I Velez [jorgeivanvelez at gmail.com]
Sent: Friday, November 23, 2012 10:02 PM
To: Muhuri, Pradip (SAMHSA/CBHSQ)
Cc: r-help at r-project.org
Subject: Re: [R] subsetting - questions
Sent: Friday, November 23, 2012 10:02 PM
To: Muhuri, Pradip (SAMHSA/CBHSQ)
Cc: r-help at r-project.org
Subject: Re: [R] subsetting - questions
Hi Pradip,
It is easier to use subset(). Check ?subset for some examples and pay special attention to the "select" parameter. By the way, do not call your data "df" as it is already a function.
Best,
Jorge.-
On Sat, Nov 24, 2012 at 1:55 PM, Muhuri, Pradip (SAMHSA/CBHSQ) <> wrote:
Hello,
I have two very basic questions (console attached):
1) What am I getting an error message for # 5 and # 7 ?
2) How to fix the code?
I would appreciate receiving your help.
Thanks,
Pradip Muhuri
###### Reproducible Example #####
N <- 100
set.seed(13)
df<-data.frame(matrix(sample(c(1:10),N, replace=TRUE),ncol=5))
keep_var <- c("X1", "X2")
drop_var <- c("X3", "X4", "X5")
df[df$X1>=8,] [,1:2] #1
df[df$X1>=8,] [,-c(3,4,5)] #2
df[df$X1>=8,] [,c(-3,-4,-5)] #3
df[df$X1>=8,] [,c("X1", "X2")] #4
df[df$X1>=8,] [,-c("X3", "X4", "X5")] #5 DOES NOT WORK
df[df$X1>=8,] [,keep_var] #6
df[df$X1>=8,] [, !drop_var] #7 DOES NOT WORK
______________________________________________
R-help at r-project.org<mailto: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.
Hello Peter,
1. -c("X3", "X4", "X5")
For the above variables, class is integer.
Arun has suggested the following:
df[df$X1>=8,][-which(names(df)%in% c("X3","X4","X5"))]
2. df[df$X1>=8,] [, !names(df) %in% drop_var]
I agree - Arun has also suggested the same.
Thanks and regards,
Pradip
From: Peter Ehlers [ehlers at ucalgary.ca]
Sent: Friday, November 23, 2012 10:47 PM
To: Muhuri, Pradip (SAMHSA/CBHSQ)
Cc: r-help at r-project.org
Subject: Re: [R] subsetting - questions
Sent: Friday, November 23, 2012 10:47 PM
To: Muhuri, Pradip (SAMHSA/CBHSQ)
Cc: r-help at r-project.org
Subject: Re: [R] subsetting - questions
On 2012-11-23 18:55, Muhuri, Pradip (SAMHSA/CBHSQ) wrote:
>
> Hello,
>
> I have two very basic questions (console attached):
>
> 1) What am I getting an error message for # 5 and # 7 ?
> 2) How to fix the code?
>
> I would appreciate receiving your help.
>
> Thanks,
>
> Pradip Muhuri
>
>
>
> ###### Reproducible Example #####
>
> N <- 100
> set.seed(13)
> df<-data.frame(matrix(sample(c(1:10),N, replace=TRUE),ncol=5))
>
> keep_var <- c("X1", "X2")
> drop_var <- c("X3", "X4", "X5")
>
>
> df[df$X1>=8,] [,1:2] #1
> df[df$X1>=8,] [,-c(3,4,5)] #2
> df[df$X1>=8,] [,c(-3,-4,-5)] #3
> df[df$X1>=8,] [,c("X1", "X2")] #4
> df[df$X1>=8,] [,-c("X3", "X4", "X5")] #5 DOES NOT WORK
> df[df$X1>=8,] [,keep_var] #6
> df[df$X1>=8,] [, !drop_var] #7 DOES NOT WORK
To see what's wrong, just print the problematic part:
-c("X3", "X4", "X5")
You can't negate a character vector; you have to have a numeric vector.
And
!drop_var
doesn't work because you need something that evaluates to a logical
value if you want to "!" it.
This will do it:
df[df$X1>=8,] [, !names(df) %in% drop_var]
Or use the subset() function, as Jorge suggests.
Peter Ehlers