动态更改所有列名称<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />我正在打开一个文本文件,想要将其与现有 JMP 文件连接。不幸的是,两个文件的列名不匹配,因此无法轻松连接。我正在尝试更改文本文件的列名称,以匹配它将连接到的特定 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 露水点_avg 雨量_总风速_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),因此我认为使用查找表或多个 If Then Else 可能会起作用。
如果 colname = tair_avg 则 colname = Tair (C) Else
如果 colname = rh_avg 则 colname = RH (%) 否则
如果 colname = Windspeed_avg 那么 colname = 风速 (mph)
......
但是,由于我的 JMP 文件可能包含超过 100 列,因此使用这么多 IF 语句似乎并不实用或高效。如果有任何关于如何最好地实现这一目标的想法或建议,我将不胜感激。
回复:动态更改所有列名称谢谢PMroz。您的解决方案比我发现的涉及大量 Try 命令的解决方案要好得多(见下文)。
尝试(
类型(列(“名称”));
Column( dt, "名称" ) << 设置名称( "名称" );
);
尝试(
类型(列(“年龄”));
Column( dt, "年龄" ) << 设置名称( "年龄" );
);
尝试(
类型(列(“空气”));
Column( dt, "air" ) << 设置名称( "Tair (C)" );
);
回复:动态更改所有列名称// 文本文件中所有可能列的列表
文本列列表= { “tair_avg” , “rh_avg” , “总降雨量” , “露点平均值” , “叶子湿度最小值” , “风速_平均值” } ;
// 所有新列名称的列表,顺序与text_col_list相同
jmp_col_list = { “泰尔_(C)” , “相对湿度(%)” , “降雨量(毫米)” , “露点(C)” , “叶片湿度(mV)” , “风速(英里/小时)” } ;
dt =数据表( “文本文件1” ) ;
列名列表= dt <<获取列名(细绳) ;
为了(我= 1 ,我<=尼特姆斯(文本列列表) ,我++,
如果(包含(列名称列表,文本列列表[我]) ,
柱子( dt ,文本列列表[我]) <<设置名称( jmp_col_list [我]) ;
) ;
) ;