我試圖轉置所有以S開頭的列(並且只有這些列以我的數據集中的S開頭 - 附加的樣本dt)。 有時S列比其他列多,所以我需要構建一個以S開頭的列列表,這樣我就可以將該列表傳遞給轉置代碼。 當然還有其他標題的列。
我看到至少2個其他問題相同的帖子( 鏈接1 和 LINK2 )但是我在復制結果時遇到了麻煩,我想知道是不是因為JMP14表現不一樣,或者我只是做錯了?
我的代碼在下面,但是當我運行它時,這是我的錯誤。 我的樣本dt已附上。
子串:在訪問或評估'AllCols [i]',AllCols [/ * ### * / i]時不是字符串或數字
在以下腳本中,錯誤標記為/ * ### * /
對於(i = 1,i <= N項(AllCols),i ++,
如果(
Substr(AllCols [/ * ### * / i],1,1)==“S”&
缺失(Num(Substr(AllCols [i],2)))== 0,
Insert Into(ColList,Num(Substr(AllCols [i],2)))
)
)
dt= current data table();
AllCols = dt << get column names;
ColList = {};
For( i = 1, i <= N Items( AllCols ), i++,
If( Substr( AllCols[i], 1, 1 ) == "S" & Is Missing( Num( Substr( AllCols[i], 2 ) ) ) == 0,
Insert Into( ColList, Num( Substr( AllCols[i], 2 ) ) )
);
);
// Create Column Lists
For(i=1,i<=nItems(ColList),i++,
ColList[i]=column("S" || char(ColList[i]));
);
Jim,所以看起來我缺少的一個關鍵是將列名定義為字符串。 謝謝!
你做的工作比你需要的多得多。 這是對代碼的修改
dt = Current Data Table();
AllCols = dt << get column names( string );
ColList = {};
For( i = 1, i <= N Items( AllCols ), i++,
If( Substr( AllCols[i], 1, 1 ) == "S" & Is Missing( Num( Substr( AllCols[i], 2 ) ) ) == 0,
Insert Into( ColList, AllCols[i])
)
);
dt2 = dt << Transpose(
columns( eval( ColList )));