[R] How to combine conditional argument and logical argument in R to create subset of data...
arun
smartpink111 at yahoo.com
Wed Mar 6 14:35:18 CET 2013
Hi HJ,
Tem2<- as.data.frame(Tem1)
res<-do.call(rbind,split(Tem2,Tem2$V1))
row.names(res)<- 1:nrow(res)
head(res,7)
# V1 V2
#1 111 1
#2 111 2
#3 111 3
#4 111 4
#5 111 13
#6 111 14
#7 111 15
A.K.
________________________________
From: HJ YAN <yhj204 at googlemail.com>
To: arun <smartpink111 at yahoo.com>
Cc: r-help at r-project.org
Sent: Wednesday, March 6, 2013 8:24 AM
Subject: Re: [R] How to combine conditional argument and logical argument in R to create subset of data...
Hi Arun
Thank you so much for the help, that's really helpful!!
Also I have a quick question about the code below where I can not see why it doesn't work...
I know the I shou
V1<-c(rep(111,4),rep(222,4),rep(333,4),rep(111,4),rep(222,4),rep(333,3))
V2<-c(1:23)
Tem1<-cbind(V1,V2)
So Tem 1 looks like...
> Tem1
V1 V2
[1,] 111 1
[2,] 111 2
[3,] 111 3
[4,] 111 4
[5,] 222 5
[6,] 222 6
[7,] 222 7
[8,] 222 8
[9,] 333 9
[10,] 333 10
[11,] 333 11
[12,] 333 12
[13,] 111 13
[14,] 111 14
[15,] 111 15
[16,] 111 16
[17,] 222 17
[18,] 222 18
[19,] 222 19
[20,] 222 20
[21,] 333 21
[22,] 333 22
[23,] 333 23
I would like the outcome to be...
V1 V2
111 1
111 2
111 3
111 4
111 13
111 14
111 15
111 16
222 5
222 6
222 7
222 8
222 17
222 18
222 19
222 20
333 9
333 10
333 11
333 12
333 21
333 22
333 23
So I tried code as below
------------------------------------------
Tem3<-c(NA,NA)
for(i in length(unique(Tem1[,1]))){
Tem2<-subset(Tem1,Tem1[,1]==unique(Tem1[,1])[i])
Tem3<-rbind(Tem3,Tem2)
Tem3
}
Tem4<-Tem3[-1,]
---------------------------------------
And only get this...
V1 V2
333 9
333 10
333 11
333 12
333 21
333 22
333 23
I tried to run the code step by step, e.g. letting i=1, then i=2, then i= 3, and updating my Tem3, I did get what I wanted, but wondered why in the loop above it did not work...??
Many thanks in advance!
HJ
On Wed, Mar 6, 2013 at 4:36 AM, arun <smartpink111 at yahoo.com> wrote:
Hi,
>
> b[b[,4]>15 & (b[,1]>4|is.na(b[,1])) & (b[,2]>4|is.na(b[,2])),]
> # [,1] [,2] [,3] [,4] [,5]
>#[1,] 6 NA NA 16 20
>#[2,] NA 5 NA 17 21
>A.K.
>
>
>
>----- Original Message -----
>From: HJ YAN <yhj204 at googlemail.com>
>To: r-help at r-project.org
>Cc:
>Sent: Tuesday, March 5, 2013 9:33 PM
>Subject: [R] How to combine conditional argument and logical argument in R to create subset of data...
>
>Dear R user
>
>I have data created using code below
>
>b<-matrix(2:21,nrow=4)
>b[,1:3]=NA
>b[4,2]=5
>b[3,1]=6
>
>Now the data is
>
>> b
> [,1] [,2] [,3] [,4] [,5]
>[1,] NA NA NA 14 18
>[2,] NA NA NA 15 19
>[3,] 6 NA NA 16 20
>[4,] NA 5 NA 17 21
>
>
>I want to keep data in column 4 greater than 15 and the value in column 1 &
>2 either greater than 4 or is 'NA'. So I would like to have
>my outcome as below...
>
>[3,] 6 NA NA 16 20
>[4,] NA 5 NA 17 21
>
>I thought something like the code below gonna to work but it only returns
>the last row,e.g "NA 5 NA 17 21". ...
>
>bb<-b[which( (b[,2]>4 | b[,2]==NA) & (b[,1]>4 | b[,1]==NA) & b[,4]>15) ,])
>
>
>Please could anyone help?
>
>Many thanks in advance
>
>HJ
>
> [[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.
>
>
More information about the R-help
mailing list