すべての列名を動的に変更する<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />既存のJMPファイルと連結したいテキストファイルを開いています。残念ながら、2つのファイルの列名は一致しないため、簡単に連結することはできません。テキストファイルの列名を、連結先の特定のJMPファイルの列名と一致するように変更しようとしています。さらに複雑なことに、さまざまなテキストファイルとJMPデータファイルで列の数とその位置が変わります。例えば
テキストファイル1の列名
tair_avg rh_avg rain_total dew_point_avg leaf_wetness_min windspeed_avg
JMPデータファイル1
Tair_(C)RH(%)降雨量(mm)露点(C)葉の湿り度(mV)風速(mph)
テキストファイル2の列名
rh_avg tair_avg dew_point_avg rain_total windspeed_avg tsoil_5cm_avg tsoil_15cm_avg
JMPデータファイル2
RH(%)Tair_(C)露点(C)降雨量(mm)風速(mph)Tsoil @ 5cm(C)Tsoil @ 15cm(C)
対応するJMPデータファイルの列名と一致するようにテキストファイルの列名を条件付きで評価および変更するための最良の方法がわかりません。すべての列名はさまざまなJMPデータファイル間で一貫しているため、つまり気温は常にTair(C)であるため、ルックアップテーブルまたは複数のIfThenElseを使用すると機能する可能性があると考えていました。
colname=tair_avgの場合colname=Tair(C)Else
colname=rh_avgの場合colname=RH(%)Else
colname=windspeed_avgの場合colname=Windspeed(mph)
.....。
ただし、私のJMPファイルには100を超える列が含まれている可能性があるため、その多くのIFステートメントの使用は実用的または効率的ではないようです。これを達成するための最善の方法についてのアイデアや提案をいただければ幸いです。
Re:すべての列名を動的に変更しますPMrozに感謝します。あなたの解決策は、多くのTryコマンドを含む私が理解した解決策よりもはるかに優れています(以下を参照)。
試す(
Type(Column( "name"));
Column(dt、 "name")<< Set Name( "Name");
);
試す(
Type(Column( "age"));
Column(dt、 "age")<< Set Name( "Age");
);
試す(
Type(Column( "air"));
Column(dt、 "air")<< Set Name( "Tair(C)");
);
Re:すべての列名を動的に変更します//テキストファイルで可能なすべての列のリスト
text_col_list = {{ 「tair_avg」 、 「rh_avg」 、 "rain_total" 、 「dew_point_avg」 、 "leaf_wetness_min" 、 「windspeed_avg」 } ;
//text_col_listと同じ順序でのすべての新しい列名のリスト
jmp_col_list = {{ 「Tair_(C)」 、 「RH(%)」 、 「降雨量(mm)」 、 「露点(C)」 、 「リーフウェットネス(mV)」 、 「風速(mph)」 } ;
dt =データ表(( 「テキストファイル1」 )。 ;
col_name_list = dt <<列名を取得する((ストリング)。 ;
為に((私= 1 、私<= nitems (( text_col_list )。 、私++、
もしも((含む(( col_name_list 、 text_col_list [私]) 、
桁(( dt 、 text_col_list [私]) <<セット名(( jmp_col_list [私]) ;
)。 ;
)。 ;