Thank you Dennis.
arr$gw <- as.numeric(weather$Date == arr$Date & arr$quarter %in%
weather$quarter)
seems to be what I want to do, but in fact, with the full data set, it
misidentifies the rows, so I think the error message must mean something.

> arrr$Date <- as.Date(as.character(ewr$Date),format="%m/%d/%y")
> weather$Date <- as.Date(as.character(weather$Date),format="%m/%d/%y")
> gw = c(length(arrr))
> gw[1:length(arrr[,1])]=FALSE
> gw[arrr$Date==weather$Date & weather$quarter %in% arr$quarter]
Warning in `==.default`(arr$Date, weather$Date) :
  longer object length is not a multiple of shorter object length
Warning in arr$Date == weather$Date & weather$quarter %in% arr$quarter :
  longer object length is not a multiple of shorter object length
  [1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0
 [38] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0
 [75] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0
[112] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0
[149] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0
[186] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0
[223] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0
[260] 0 0 0 0 0 0 0 0

There are many many more matches in the 99k line arrival data set.

Thanks a bunch,
Jim


On 1/17/10 3:21 PM, Dennis Murphy wrote:
> Hi:
>
> To read a data set from a R-help message into R, one uses
> read.table(textConnection("<verbatim text>"), ...)
>
> Your weather data set had
> (a) a variable name with a space in it, that R misread and had to be
> altered manually;
> (b) a missing value with no NA that R interpreted as an incomplete
> line; again, it had
>      to be altered manually.
>
> This is why David suggested the use of dput(), so that these vagaries
> don't have to be
> dealt with by those who are trying to help.
>
> That being said, for the example that you gave and the desired value
> that you wanted, try
>
> arr$gw <- as.numeric(weather$Date == arr$Date & arr$quarter %in%
> weather$quarter)
>
> (I changed DateTime to Date in the arr data frame...)
>
> You'll get warnings like
>
> Warning messages:
> 1: In is.na <http://is.na>(e1) | is.na <http://is.na>(e2) :
>   longer object length is not a multiple of shorter object length
>
> but it seems to do the right thing. The first equality is there to
> constrain matches for
> quarter to be within the same day.
>
> For future reference,
>
> > dput(weather)
> structure(list(Date = structure(c(1L, 1L, 1L, 1L), .Label = "1/1/09",
> class = "factor"),
>     minute = c(5L, 15L, 30L, 45L), hour = c(15L, 15L, 15L, 15L
>     ), quarter = 60:63, efficiency = c(NA, 72, 63.3, 85.4)), .Names =
> c("Date",
> "minute", "hour", "quarter", "efficiency"), class = "data.frame",
> row.names = c(NA,
> -4L))
> > dput(arr)
> structure(list(Date = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L,
> 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = "1/1/09",
> class = "factor"),
>     weekday = c(5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L,
>     5L, 5L, 5L, 5L, 5L, 5L, 5L), month = c(1L, 1L, 1L, 1L, 1L,
>     1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L),
>     quarter = c(59L, 59L, 60L, 60L, 60L, 60L, 60L, 60L, 60L,
>     60L, 60L, 60L, 60L, 61L, 61L, 61L, 61L, 66L, 67L), ICAO =
> structure(c(6L,
>     8L, 7L, 3L, 6L, 3L, 5L, 3L, 3L, 1L, 3L, 5L, 3L, 3L, 6L, 6L,
>     2L, 4L, 3L), .Label = c("AAL", "AWE", "BTA", "CHQ", "CJC",
>     "COA", "JBU", "NWA"), class = "factor"), Flight = structure(c(15L,
>     19L, 18L, 6L, 17L, 8L, 12L, 5L, 4L, 1L, 3L, 13L, 9L, 10L,
>     14L, 16L, 2L, 11L, 7L), .Label = c("AAL842", "AWE307", "BTA1234",
>     "BTA2064", "BTA2085", "BTA2347", "BTA2405", "BTA2916", "BTA3072",
>     "BTA3086", "CHQ5312", "CJC3225", "CJC3359", "COA1166", "COA349",
>     "COA855", "COA886", "JBU554", "NWA9934"), class = "factor"),
>     gw = c(FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE,
>     TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE,
>     FALSE)), .Names = c("Date", "weekday", "month", "quarter",
> "ICAO", "Flight", "gw"), row.names = c(NA, -19L), class = "data.frame")
>
> These can be copied and pasted directly into an R session without
> modification.
>
> HTH,
> Dennis
>
> On Sun, Jan 17, 2010 at 10:51 AM, James Rome <jamesr...@gmail.com
> <mailto:jamesr...@gmail.com>> wrote:
>
>
>
>
>     On 1/17/10 1:06 PM, David Winsemius wrote:
>     >
>     > On Jan 17, 2010, at 12:37 PM, James Rome wrote:
>     >
>     >> I don't think it is that simple because it is not a one-to-one
>     match. In
>     >> the arr data frame, there are many arrivals in a quarter hour
>     with good
>     >> weather on a given day. So I need to match the date and the quarter
>     >> hour.
>     >>
>     >> And all of the rows in the weather data frame are times with good
>     >> weather--unique date + quarter hour. That is why I needed the
>     loop. For
>     >> each date and quarter hour in weather, I want to mark all the
>     entries
>     >> with the corresponding date and weather as TRUE in the arr$gw
>     column.
>     >>
>     >> I did convert the dates to POSIXlt dates and rewrote my function as
>     >> gooddates = function(all, good) {
>     >>   la = length(all)   # All the arrivals
>     >>  lw = length(good)  # The good 15-minute periods
>     >>  for(j in 1:lw) {
>     >>    d=good$Date[j]
>     >>    q=good$quarter[j]
>     >>    all$gw[all$Date==d && all$quarter==q]=TRUE
>     >
>     >
>     > You are attempting a vectorized test and assignment with "&&" which
>     > seems unlikely to succeed, but even then I am not sure your problems
>     > would be over. (I'm also guessing that you might not have reported a
>     > warning.)
>
>     Why shouldn't the && succeed? You are correct there, because I do get
>     items if I use either part of this and test, when I insert the &&,
>     I get
>     no hits. And I got no warnings.
>     >
>     > Why not merge arr to gw by date and quarter?
>     The sets contain different data, and the only thing I want from the
>     weather set is the fact that it has an entry for a given date and time
>     >
>     > Answering these questions would be greatly speeded up with a small
>     > sample dataset. Are you aware of the virtues of the dput function?
>     >
>
>     What I want is for a 1 to be in the gw column in the quarter
>     60,61,62,63,...
>
>     For example, here is some data from the good weather set:
>     Date    minute  hour    quarter         Efficiency Val
>     1/1/09  5       15      60
>     1/1/09  15      15      61      72
>     1/1/09  30      15      62      63.3
>     1/1/09  45      15      63      85.4
>
>
>
>     And this is from the arrivals set:
>     DateTime        weekday         month   quarter         ICAO  
>      Flight  gw
>
>     1/1/09  5       1       59      COA     COA349          0
>     1/1/09  5       1       59      NWA     NWA9934         0
>     1/1/09  5       1       60      JBU     JBU554          0
>     1/1/09  5       1       60      BTA     BTA2347         0
>     1/1/09  5       1       60      COA     COA886          0
>     1/1/09  5       1       60      BTA     BTA2916         0
>     1/1/09  5       1       60      CJC     CJC3225         0
>     1/1/09  5       1       60      BTA     BTA2085         0
>     1/1/09  5       1       60      BTA     BTA2064         0
>     1/1/09  5       1       60      AAL     AAL842          0
>     1/1/09  5       1       60      BTA     BTA1234         0
>     1/1/09  5       1       60      CJC     CJC3359         0
>     1/1/09  5       1       60      BTA     BTA3072         0
>     1/1/09  5       1       61      BTA     BTA3086         0
>     1/1/09  5       1       61      COA     COA1166         0
>     1/1/09  5       1       61      COA     COA855          0
>     1/1/09  5       1       61      AWE     AWE307          0
>     1/1/09  5       1       66      CHQ     CHQ5312         0
>     1/1/09  5       1       67      BTA     BTA2405         0
>
>
>
>            [[alternative HTML version deleted]]
>
>     ______________________________________________
>     R-help@r-project.org <mailto: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.
>
>

        [[alternative HTML version deleted]]

______________________________________________
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