Not sure whether I understand your data and objectives well enough but here is 
what I would do:

To make my life easier, I used x as a variable name. I'm not using attach().

You can extract your data with something like
y <- x[x$wrfta>= 255 | x$wrfta<= 65 & x$wrfrain == 0, ]
y <- y[!is.na(y[5]),]
> y
         Date wrfRH wrfsolar wrfwindspeed wrfrain     wrftd    wrfta
1  21/10/2010 92.97    22.11        53.27       0 1546.3379 61.00853
2  22/10/2010 87.35    21.99        40.89       0 1300.4083 62.85352
7  27/10/2010 89.00    21.66        42.30       0 1060.4449 41.86858
9  29/10/2010 84.50    21.66        37.80       0 1015.8014 34.11626
10 30/10/2010 84.98    22.00        36.27       0  839.5041 43.44048
11 31/10/2010 84.40    22.40        33.44       0  742.5285 45.81573
12  1/11/2010 80.09    22.24        38.35       0 1157.9933 45.59035
13  2/11/2010 84.41    21.69        36.19       0 1075.2672 51.66310
14  3/11/2010 88.55    21.22        37.73       0 1163.2865 51.34180
18  7/11/2010 89.45    20.81        24.75       0  720.9882 57.76271
19  8/11/2010 85.82    20.96        28.63       0  790.5736 37.96772
20  9/11/2010 85.02    20.96        31.94       0  703.2994 40.62208

Does that help?

Rgds,
Rainer



By the way, it is better to provide the data in dput() format:

x <- structure(list(Date = structure(c(2L, 4L, 5L, 6L, 7L, 8L, 9L, 
10L, 11L, 12L, 13L, 1L, 3L, 14L, 15L, 16L, 17L, 18L, 19L, 20L
), .Label = c("1/11/2010", "21/10/2010", "2/11/2010", "22/10/2010", 
"23/10/2010", "24/10/2010", "25/10/2010", "26/10/2010", "27/10/2010", 
"28/10/2010", "29/10/2010", "30/10/2010", "31/10/2010", "3/11/2010", 
"4/11/2010", "5/11/2010", "6/11/2010", "7/11/2010", "8/11/2010", 
"9/11/2010"), class = "factor"), wrfRH = c(92.97, 87.35, 88.38, 
92.32, 93.42, 93.38, 89, NA, 84.5, 84.98, 84.4, 80.09, 84.41, 
88.55, 90.58, 95.17, 95.2, 89.45, 85.82, 85.02), wrfsolar = c(22.11, 
21.99, 21.71, 15.45, 21.59, 20.15, 21.66, NA, 21.66, 22, 22.4, 
22.24, 21.69, 21.22, 2.88, 2.46, 11.18, 20.81, 20.96, 20.96), 
    wrfwindspeed = c(53.27, 40.89, 28.04, 22.38, 35.5, 42.58, 
    42.3, NA, 37.8, 36.27, 33.44, 38.35, 36.19, 37.73, 38.49, 
    32.22, 27.55, 24.75, 28.63, 31.94), wrfrain = c(0, 0, 0.01, 
    0.51, 0.52, 0.07, 0, NA, 0, 0, 0, 0, 0, 0, 0.56, 3.48, 0.84, 
    0, 0, 0), wrftd = c(1546.337861, 1300.408288, 1381.768284, 
    1113.90981, 868.4895334, 1404.722837, 1060.444918, 1109.596721, 
    1015.801383, 839.5041209, 742.5284832, 1157.99328, 1075.26719, 
    1163.286504, 1022.03364, 1065.735327, 1027.066675, 720.9881913, 
    790.5735604, 703.2993511), wrfta = c(61.00852664, 62.85352227, 
    54.80594493, 39.46573663, 28.42952321, 40.29300856, 41.86858345, 
    39.84995092, 34.11625725, 43.44047866, 45.81572847, 45.59035293, 
    51.66310159, 51.34179935, 57.74352136, 57.7734991, 54.40282225, 
    57.76270824, 37.96771725, 40.62208274), cat = c(NA, NA, 1, 
    1, 1, 1, NA, NA, NA, NA, NA, NA, NA, NA, 1, 1, 1, NA, NA, 
    NA)), .Names = c("Date", "wrfRH", "wrfsolar", "wrfwindspeed", 
"wrfrain", "wrftd", "wrfta", "cat"), row.names = c(NA, -20L), class = 
"data.frame")


On Thursday 31 May 2012 07:55:01 pigpigmeow wrote:
> Dear all,
> I find some troubles about how to extact the row from csv. file by using
> if-statement condition.
> I want to extract the row if the rainfall is greater than the mean of
> rainfall and using the wrfta divided into 3 groups
> that's 
> rainfall greater than mean -> group A ( create file group A_rain) 
>                                                 -> groupB ( create file
> group B_rain) 
>                                                 -> groupC ( create file
> group C_rain) 
> rainfall less than mean -> group A ( create file group A_norain) 
>                                                 -> groupB ( create file
> group B_norain) 
>                                                 -> groupC ( create file
> group C_norain) 
> my csv. file is ..
> Date                    wrfRH wrfsolar        wrfwindspeed    wrfrain wrftd   
> wrfta
> 21/10/2010    92.97   22.11   53.27   0       1546.337861     61.00852664
> 22/10/2010    87.35   21.99   40.89   0       1300.408288     62.85352227
> 23/10/2010    88.38   21.71   28.04   0.01    1381.768284     54.80594493
> 24/10/2010    92.32   15.45   22.38   0.51    1113.90981      39.46573663
> 25/10/2010    93.42   21.59   35.5    0.52    868.4895334     28.42952321
> 26/10/2010    93.38   20.15   42.58   0.07    1404.722837     40.29300856
> 27/10/2010    89      21.66   42.3    0       1060.444918     41.86858345
> 28/10/2010    NA      NA      NA      NA      1109.596721     39.84995092
> 29/10/2010    84.5    21.66   37.8    0       1015.801383     34.11625725
> 30/10/2010    84.98   22      36.27   0       839.5041209     43.44047866
> 31/10/2010    84.4    22.4    33.44   0       742.5284832     45.81572847
> 1/11/2010     80.09   22.24   38.35   0       1157.99328      45.59035293
> 2/11/2010     84.41   21.69   36.19   0       1075.26719      51.66310159
> 3/11/2010     88.55   21.22   37.73   0       1163.286504     51.34179935
> 4/11/2010     90.58   2.88    38.49   0.56    1022.03364      57.74352136
> 5/11/2010                        95.17        2.46    32.22   3.48    
> 1065.735327     57.7734991
> 6/11/2010     95.2    11.18   27.55   0.84    1027.066675     54.40282225
> 7/11/2010                       89.45 20.81   24.75   0       720.9881913     
> 57.76270824
> 8/11/2010     85.82   20.96   28.63   0       790.5735604     37.96771725
> 9/11/2010     85.02   20.96   31.94   0       703.2993511     40.62208274
> 
> my script is .....
> #Import data
> wrfJJA_UTC06<-read.csv("JJA_UTC06_ALL.csv", header =T,sep=",")
> attach(wrfJJA_UTC06)
> 
>       if(wrfrain < a) 
>               groupA_norain<- new[wrfta>= 255 | wrfta<= 65,]
>               groupB_norain<- new[wrfta>= 65 & wrfta<= 180,]
>               groupC_norain<- new[wrfta>= 180 & wrfta<= 255,]
>       
> 
>       else
>               groupA_rain<- new[wrfta>= 255 | wrfta<= 65,]
>               groupB_rain<- new[wrfta>= 65 & wrfta<= 180,]
>               groupC_rain<- new[wrfta>= 180 & wrfta<= 255,]
> 
> #save as ...
> write.csv(groupA_norain,"groupA_norain.csv")
> write.csv(groupB_norain,"groupB_norain.csv")
> .....
>       
> 
> however, it gets error message. what wrong?
> Warning message:
> In if (n_wrfrain < a) groupA_norain <- new[n_wrfta >= 255 | n_wrfta <=  :
>   the condition has length > 1 and only the first element will be used
> 
> my data wrfrain contains NA. what can I do?!
> please help!
> 
> --
> View this message in context: 
> http://r.789695.n4.nabble.com/please-help-Extract-the-row-to-the-new-file-by-using-if-statment-tp4631957.html
> Sent from the R help mailing list archive at Nabble.com.
> 
> ______________________________________________
> R-help@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.

______________________________________________
R-help@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.

Reply via email to