The Origin Forum
File Exchange
Try Origin for Free
The Origin Forum
Home | Profile | Register | Active Topics | Members | Search | FAQ | Send File to Tech support
 All Forums
 Origin Forum
 Origin Forum
 Deleting rows with no continous range

Note: You must be registered in order to post a reply.
To register, click here. Registration is FREE!

Screensize:
UserName:
Password:
Anti-Spam Code:
Format Mode:
Format: BoldItalicizedUnderlineStrikethrough Align LeftCenteredAlign Right Horizontal Rule Insert HyperlinkUpload FileInsert Image Insert CodeInsert QuoteInsert List
   
Message:

* HTML is OFF
* Forum Code is ON
Smilies
Smile [:)] Big Smile [:D] Cool [8D] Blush [:I]
Tongue [:P] Evil [):] Wink [;)] Clown [:o)]
Black Eye [B)] Eight Ball [8] Frown [:(] Shy [8)]
Shocked [:0] Angry [:(!] Dead [xx(] Sleepy [|)]
Kisses [:X] Approve [^] Disapprove [V] Question [?]

 
Check here to subscribe to this topic.
   

T O P I C    R E V I E W
bmmaoso Posted - 09/13/2004 : 10:30:00 AM
Hello, My origin version is 6.0.
I want to delete some rows from a worksheet, but I am not sure how to do it. In my labtalk I need to delete the rows with null value. My labtalk is:
n=wks.nrows;
for (i=1;i<=n;i++){
if (col(Mass)[i] == --){
work -s 1 i 13 i;
mark -w1;
mark -d %B_Mass 1 i 13 i}; //delete rows (but it doesn't work)
};

Thank you for your help.
Maria Isabel
5   L A T E S T    R E P L I E S    (Newest First)
Mike Buess Posted - 09/14/2004 : 10:54:25 AM
The first method fails because the number of filled rows changes when you delete a row. This modification works fine...

get %B_Mass -e nn; // number of filled rows (can be less than wks.nrows)
mm=nn;
for(i=1;i<=nn;i++) {
if(i>mm) break;
if(%B_Mass[i]==0/0) {
mark -d %B_Mass -b i -e i;
mm--;
};

...Even that script has problems with consecutive nulls. The following seems to work better.

get %B_Mass -e mm;
for(i=1;i>0;) {
if(i>mm) break;
if(%B_Mass[i]==0/0) {
mark -d %B_Mass -b i -e i;
mm--;
};
else i++;
};

Mike Buess
Origin WebRing Member

Edited by - Mike Buess on 09/14/2004 1:40:37 PM
bmmaoso Posted - 09/14/2004 : 08:54:12 AM
Thank you Mike, my wks works successfully.
Mike Buess Posted - 09/14/2004 : 07:45:02 AM
Easier to create a new sorting column...

sum(%B_Mass); nn=sum.n; // how many values in Mass col?
get %B_Mass -e nrow; // how many rows?
win -o %B {
wo -c; // add col at end
%S=wks.col$(wks.ncols).name$; // save its name
};
%B_%S=data(1,nrow); // fill col with row numbers
sort -w %B %B_Mass;
set %B -er nn;
sort -w %B %B_%S;
del %B_%S; // delete sorting column

Mike Buess
Origin WebRing Member
bmmaoso Posted - 09/14/2004 : 04:23:42 AM
Thank you very much

The first option to not work, I don't know why, but it delete most of the columns. However, the second one works really good.

To work successfully with the second option I have other problem, my first column in the wks is a time and date column (hh:mm:ss dd/mm/yy), but I need to leave only the time in this column with hh:mm:ss format. If I leave only the hh:mm format, the second option you gave me doesn't work successfully. I have a labtalk, but it set the seconds 00. Also, I change the custum Date format to hh:mm:ss as a second option but I have problems:

wks.col1.format=3; //time format
wks.col1.subformat=2; //time format (but it set seconds as 00)
or
wks.col1.format=4; //date format
wks.col1.subformat=20 //subformat custum1 (hh:mm:ss)(but it show the column as null values)

If I do the second option manually it works. So I think there should be an option to do it with labtalk.

Thank you very much for your help
Mike Buess Posted - 09/13/2004 : 11:36:12 AM
Hi Maria,

If wks Data1 has a column named B then this command...

mark -d Data1_B -b r1 -e r2;

will delete rows r1 through r2 from the entire worksheet. Set r2=r1=i to delete just row i and your script will look like this...

n=wks.nrows;
for(i=1;i<=n;i++) {
if(col(Mass)[i] == 0/0) {
mark -d %B_Mass -b i -e i; // delete row i
};
};

(0/0 gives a null value which shows up as -- in the wks.)

...There's a much faster way to do this if your wks %B has a sorted column. For example, if col A contains increasing X values you can do the following.

sum(%B_Mass);
nn=sum.n; // this is the number of numeric (non-missing) values in the Mass col
sort -w %B %B_Mass; // sort wks in ascending order of col Mass. (This will send all null values to the bottom.)
set %B -er nn; // set # of rows in %B equal to nn. (Remove all null values.)
sort -w %B %B_A; // sort wks in ascending order of col A. (Return to original order.)

Mike Buess
Origin WebRing Member

Edited by - Mike Buess on 09/13/2004 12:03:26 PM

The Origin Forum © 2020 Originlab Corporation Go To Top Of Page
Snitz Forums 2000