Turn on suggestions

Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.

Showing results for

- JMP User Community
- :
- Discussions
- :
- Discussions
- :
- Re: How to use function to find the first position greater than the specified s...

Topic Options

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Get Direct Link
- Email to a Friend
- Report Inappropriate Content

Mar 9, 2019 12:12 AM
(328 views)

Use the function to find the first position of the weight column in the top 5 rows greater than 120.

Excuse me, Thanks!

2 ACCEPTED SOLUTIONS

Accepted Solutions

Highlighted
Solution

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Get Direct Link
- Email to a Friend
- Report Inappropriate Content

Here is one way to do it

```
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/big class.jmp" );
dt << New Column( "match",
formula(
value = .;
If( Row() > 5,
count = 0;
For( i = Row() - 5, i <= Row() - 1, i++,
count++;
If( :weight[i] > 120,
value = count;
Break();
);
);
);
value;
)
);
```

```
```

Jim

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Get Direct Link
- Email to a Friend
- Report Inappropriate Content

The JSL function that here corresponds to Excel's *Match()* would be *Loc(). *However, *Loc()* returns a matrix with the position of all matches, not just the first (or last).

Example:

```
dt << New Column("match",
formula(If(Row() > 4, Loc(:weight[Row() - 4 :: Row()] > 120)[1]))
);
```

3 REPLIES 3

Highlighted
Solution

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Get Direct Link
- Email to a Friend
- Report Inappropriate Content

Here is one way to do it

```
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/big class.jmp" );
dt << New Column( "match",
formula(
value = .;
If( Row() > 5,
count = 0;
For( i = Row() - 5, i <= Row() - 1, i++,
count++;
If( :weight[i] > 120,
value = count;
Break();
);
);
);
value;
)
);
```

```
```

Jim

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Get Direct Link
- Email to a Friend
- Report Inappropriate Content

Re: How to use function to find the first position greater than the specified starting position?

It seems to me that this kind of calculation is needed by fewer people.

Thank Jim!

This calculation can be done in excel using a simple array formula.

{=MATCH(,IF(E2:E6>120,),)}

Thank Jim!

This calculation can be done in excel using a simple array formula.

{=MATCH(,IF(E2:E6>120,),)}

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Get Direct Link
- Email to a Friend
- Report Inappropriate Content

The JSL function that here corresponds to Excel's *Match()* would be *Loc(). *However, *Loc()* returns a matrix with the position of all matches, not just the first (or last).

Example:

```
dt << New Column("match",
formula(If(Row() > 4, Loc(:weight[Row() - 4 :: Row()] > 120)[1]))
);
```