导入 csv 并仅更改几列的格式我有一些需要导入的 csv 文件,并且有一些与软件版本相关的字段。 但是,它们像 xyz 一样位于 csv 中,并且没有封装在引号中,因此 JMP 尝试将其作为数字数据类型引入。 当它这样做时,JMP 认为该数字是一个日期并将其转换为日期,因此很难转换回可用版本。
如果我手动导入文件,我可以使用预览将我需要的列强制为我想要的数据类型。 但是,生成的导入脚本对每一列都有“新列()”,我要么必须省略整个内容,所以 JMP 只导入文件,要么列出所有 186 列,以便我可以控制少数的导入。
真正的问题是其中一些文件有不同的列......有些是共同的,有些不是,但在所有情况下,版本列都是共同的,我需要控制它们的引入方式。
以下是我希望能够做的事情(或类似的事情),但总列数实际上是 186 ......
Open(
filepath,
columns(
New Column( "ALGORITHM_VERSION", Character, "Nominal" ),
New Column( "CLUST_ALG_VERSION", Character, "Nominal" ),
New Column( "CYTOFILEIO_VERSION", Character, "Nominal" ),
New Column( "RELEASE_VERSION", Character, "Nominal" )
),
Import Settings(
End Of Line( CRLF, CR, LF ),
End Of Field( Comma, CSV( 0 ) ),
Strip Quotes( 1 ),
Use Apostrophe as Quotation Mark( 0 ),
Use Regional Settings( 0 ),
Scan Whole File( 1 ),
Treat empty columns as numeric( 0 ),
CompressNumericColumns( 0 ),
CompressCharacterColumns( 0 ),
CompressAllowListCheck( 0 ),
Labels( 1 ),
Column Names Start( 1 ),
Data Starts( 2 ),
Lines To Read( "All" ),
Year Rule( "20xx" )
)
)
脚本回复:导入 csv 并且只更改几列的格式这是一个应该可以将列正确更改为字符的脚本。
Names Default To Here( 1 );
dt = Open(
filepath,
Import Settings(
End Of Line( CRLF, CR, LF ),
End Of Field( Comma, CSV( 0 ) ),
Strip Quotes( 1 ),
Use Apostrophe as Quotation Mark( 0 ),
Use Regional Settings( 0 ),
Scan Whole File( 1 ),
Treat empty columns as numeric( 0 ),
CompressNumericColumns( 0 ),
CompressCharacterColumns( 0 ),
CompressAllowListCheck( 0 ),
Labels( 1 ),
Column Names Start( 1 ),
Data Starts( 2 ),
Lines To Read( "All" ),
Year Rule( "20xx" )
)
);
For( i = 1, i <= N Cols( dt ), i++,
If(
Contains(
Uppercase( Column( dt, i ) << get name ),
"_VERSION"
) & Column( dt, i ) << get data type == "Numeric",
Column( dt, i ) << set format( "Fixed Dec", 18, 0 );
Column( dt, i ) << data type( "Character" );
)
);
回复:导入 csv 并且只更改几列的格式你能用一个像这样的公式吗
Char( Month( :colName ) ) || "." || Char( Day( :colName ) ) || "." ||
Char( Year( :colName ) )
转换回来?
回复:导入 csv 并且只更改几列的格式查看一些布局,这适用于其中一些,但不是全部。当然,我不会知道我得到的布局,直到它得到处理。
现在我们有 CSV 的每一种途径的代码,我们只需要将文件发送到正确的路径以进行处理......但由于它们应该是 90% 相同的,这似乎是一种耻辱不是一个更动态的解决方案。