cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
  • JMP will suspend normal business operations for our Winter Holiday beginning on Wednesday, Dec. 24, 2025, at 5:00 p.m. ET (2:00 p.m. ET for JMP Accounts Receivable).
    Regular business hours will resume at 9:00 a.m. EST on Friday, Jan. 2, 2026.
  • We’re retiring the File Exchange at the end of this year. The JMP Marketplace is now your destination for add-ins and extensions.

Discussions

Solve problems, and share tips and tricks with other JMP users.
%3CLINGO-SUB%20id%3D%22lingo-sub-544118%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3Efor%20%E3%83%AB%E3%83%BC%E3%83%97%E3%81%A7%E5%88%97%E3%82%92%E5%89%8A%E9%99%A4%E3%81%99%E3%82%8B%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-544118%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%3CP%3E%E3%82%84%E3%81%82%E3%80%81%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%E7%A9%BA%E3%81%AE%E5%88%97%E3%82%92%E5%89%8A%E9%99%A4%E3%81%99%E3%82%8B%20for%20%E3%83%AB%E3%83%BC%E3%83%97%20%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%97%E3%81%BE%E3%81%99%20(%E5%88%97%E3%81%AB%E3%81%AF%20N%2FA%20%E3%81%AE%E3%81%BF%E3%81%8C%E5%90%AB%E3%81%BE%E3%82%8C%E3%81%BE%E3%81%99)%E3%80%82%3C%2FP%3E%3CP%3E1%E3%81%A4%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E9%99%A4%E3%81%84%E3%81%A6%E5%95%8F%E9%A1%8C%E3%81%AA%E3%81%8F%E5%8B%95%E4%BD%9C%E3%81%97%E3%80%81%E6%83%B3%E5%AE%9A%E5%A4%96%E3%81%AE%E5%A0%B4%E5%90%88%E3%81%AB1%E3%81%A4%E3%81%AE%E5%88%97%E3%81%8C%E5%89%8A%E9%99%A4%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%E4%BD%95%E3%81%8C%E6%82%AA%E3%81%84%E3%81%AE%E3%81%8B%E3%82%8F%E3%81%8B%E3%82%89%E3%81%AA%E3%81%84%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CPRE%3E%3CCODE%20class%3D%22%20language-jsl%22%3Efor%20(i%3D%20ncols%20(dt%5Bd%5D)%2Ci%26gt%3B%3D1%2Ci--%2C%0A%20summarize(data%20table(dt%5Bd%5D)%2Ctemp%20%3D%20by(column(i)))%3B%0A%20if(nitems(temp)%20%3D%3D1%20%26amp%3B%20temp%5B1%5D%3D%3D%22N%2FA%22%2C%0A%20%20data%20table(dt%5Bd%5D)%26lt%3B%26lt%3B%20delete%20columns(column(i))%3B%0A%20)%3B%0A)%3B%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-544118%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%3CLINGO-LABEL%3E%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E
Choose Language Hide Translation Bar
yanee
Level III

Delete columns with for loop

Hi,

 

I create a for loop script to delete empty column (column contains only N/A).

It works ok except on one file, one column get deleted when it's not suppose to.

Not sure what's wrong

 

for (i= ncols (dt[d]),i>=1,i--,
	summarize(data table(dt[d]),temp = by(column(i)));
	if(nitems(temp) ==1 & temp[1]=="N/A",
		data table(dt[d])<< delete columns(column(i));
	);
);



1 REPLY 1
jthi
Super User

Re: Delete columns with for loop

Add supporting prints inside your for loop to see what is going on with the one specific column. I usually like using Show()

Names Default To Here(1);

dt = {};

dt_u = New Table("Untitled",
	Add Rows(3),
	New Column("Column 1", Character, "Nominal", Set Values({"N/A", "N/A", "N/A"})),
	New Column("Column 2", Character, "Nominal", Set Values({"a", "", ""})),
	New Column("Column 3", Character, "Nominal", Set Values({"b", "", ""})),
	New Column("Column 4", Character, "Nominal", Set Values({"N/A", "N/A", ""}))
);
dt[1] = dt_u << get name;
d = 1;

For(i = N Cols(Datatable(dt[d])), i >= 1, i--,
	Summarize(Data Table(dt[d]), temp = by(Column(i)));
	If(i == 3,
		show(temp);
	);
	If(N Items(temp) == 1 & temp[1] == "N/A",
		show(temp);
		Data Table(dt[d]) << delete columns(Column(i))
	);
);
-Jarmo

Recommended Articles