Search All of the Math Forum:

Views expressed in these public forums are not endorsed by NCTM or The Math Forum.

Notice: We are no longer accepting new posts, but the forums will continue to be readable.

Topic: Removing rows from a table
Replies: 3   Last Post: Nov 21, 2012 7:51 PM

 Messages: [ Previous | Next ]
 Ray Koopman Posts: 3,383 Registered: 12/7/04
Re: Removing rows from a table
Posted: Nov 19, 2012 7:17 PM

On Nov 18, 2:17 pm, Citzen90210 <peter_bo...@hotmail.com> wrote:
> Total nubie here and struggling!
>
> I have a dataset of approximately 100,000 records of data points recorded at 15 minute intervals. Each row looks something like this:
>
> {"01/01/2010 06:15", 0.04375, 4.96188, 1.00885, 0, 0, 0}
>
> I've worked out how to parse the date column so that seems to be under control but now I have a list of date ranges that I need to remove from the dataset. The date ranges to be removed look something like this:
>
> {{2010, 2, 1, 12, 0, 0.0}, {2010, 2, 15, 12, 0, 0.0}},
> {{2010, 7, 1, 12, 0, 0.0}, {2010, 7, 15, 12, 0, 0.0}}
>
> with the first column representing the start date of the block to be removed and the second column representing the end date of the block, multiple rows represent multiple blocks to be removed and the total number of blocks is variable.
>
> Ideally I'd like to be able to use Drop or Delete to remove the offending blocks of data but I want to be able to somehow feed the command with the date range table and have it remove the ranges all in one go.
>
> I'm not having much luck working this out for myself and would love to get a few pointers.

exclude = {
{{2010, 2, 1, 12, 0, 0.}, {2010, 2,15, 12, 0, 0.}},
{{2010, 7, 1, 12, 0, 0.}, {2010, 7,15, 12, 0, 0.}}};

(* Assume that each term at level 2 of 'exclude' is
{y, m, d, h, m, s} for AbsoluteTime. *)

x = Interval @@ Map[AbsoluteTime, exclude, {2}];

(* Assume that the first term in each row of 'data' is
{y, m, d, h, m, s} for AbsoluteTime. *)

Select[data, Not@IntervalMemberQ[x, AbsoluteTime@#[[1]]]& ]

Date Subject Author
11/18/12 Citzen90210
11/19/12 Bill Rowe
11/19/12 Ray Koopman
11/21/12 Citzen90210