嗨-兩個有點相關的問題
我已經使用SPLIT將長文件轉換為寬文件,但情況有些複雜,我想將寬文件堆疊/轉置為長文件。
我有一個具有唯一主題ID的數據集,然後有數百個列/變量。 變量名稱完全相同,除了Year 1以'2'結尾,Year 2以'3'結尾等等。是否有一種相對簡單的方法來使該文件變長,從而有一個時間變量(1, 2,3,4),並且變量名僅在其中一次,而末尾沒有數字?
在這種數據集中,相關但以不同的方式處理上述問題,有一種方法可以在JMP中創建一個公式以告訴所有XXX百列,從行尾刪除#(例如1、2)。列/變量名稱? 顯然,我可以手動執行此操作,但這將永遠花費。
非常感謝!
這是一個腳本,它將生成一個包含三列的堆疊數據表

這是一個腳本,它將從數據表的列尾去除數字。請記住,重命名列時,如果最終結果是與先前列名相同的列名,則JMP將添加一個數值,以使新列名成為唯一名稱。
Names Default To Here( 1 );
dt = Current Data Table();
For( i = 2, i <= N Cols( dt ), i++,
if(
is missing(
Num(
word(
-1,
Lowercase( Column( dt, i ) << get name )
,
"abcdefghijklmnopqrstuvwxyz;:, -_)(")
)
) == 0,
Column( dt, i ) <<
set name(
substr(
Column(dt,i)<<GET name=""></GET>
Names Default To Here( 1 );
dt = new table( "Example",
add rows( 10 ),
New Column( "Year2", formula( Random Integer( 1, 100 ) ) ),
New Column( "Year3", formula( Random Integer( 1, 100 ) ) ),
New Column( "Year4", formula( Random Integer( 1, 100 ) ) )
);
dtStack = Data Table( "Example" ) << Stack(
columns( :Year2, :Year3, :Year4 ),
Source Label Column( Column ),
Stacked Data Column( "Data" )
);
dtStack << New Column( "Year",
formula(
Num(
Word(
-1,
Lowercase( :Column ),
"abcdefghijklmnopqrstuvwxyz;:, -_)("
)
)
)
);
dtStack:Year << delete formula;
for each row(
:Column = substr(
:Column,
1,
Length( :Column ) - Length(
Word(
-1,
Lowercase( :Column ),
"abcdefghijklmnopqrstuvwxyz;:, -_)("
)
)
)
);非常感謝您的回复。如果有記性的話,去年您還幫了我一個問題。
不幸的是,我對JMP腳本不是很精明,只需點擊一下即可。而且即使我能弄清楚,因為我有很多變量,所以我必須為每個變量運行該代碼,不是嗎?