Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 最佳实践-为表中导入的列指定数据类型的最佳时间_R - Fatal编程技术网

R 最佳实践-为表中导入的列指定数据类型的最佳时间

R 最佳实践-为表中导入的列指定数据类型的最佳时间,r,R,我导入一个包含大约200列的csv文件。使用的代码: read.csv2(“t_table.txt”,header=TRUE,stringsAsFactors=FALSE) 不同列的数据类型不同(例如文本、数字、日期等) 我不需要所有列,所以我不会在导入数据时分配数据类型,因为(保存所有列以防第三方请求额外分析非常方便)。每当我使用一个列并且文本数据类型不够时,我就会转换该列的数据类型(并存储它) 我想知道在处理包含许多列的输入表时,这是否被认为是好的/最佳实践(我怀疑不是…)。这里有什么建议

我导入一个包含大约200列的csv文件。使用的代码:

read.csv2(“t_table.txt”,header=TRUE,stringsAsFactors=FALSE)

不同列的数据类型不同(例如文本、数字、日期等)

我不需要所有列,所以我不会在导入数据时分配数据类型,因为(保存所有列以防第三方请求额外分析非常方便)。每当我使用一个列并且文本数据类型不够时,我就会转换该列的数据类型(并存储它)

我想知道在处理包含许多列的输入表时,这是否被认为是好的/最佳实践(我怀疑不是…)。这里有什么建议

请注意,我使用了一个配置表,其中我将属性/特征分配给不同的列。因此,我考虑执行以下操作:使用数据类型列扩展配置表(将链接/分配数据类型给每一列),并编写一个脚本,将数据类型分配给每一列。对这种方法有什么想法吗


注意:我认为使用配置表很容易,因为它们减少了代码量,增加了代码的透明度,并且经常减少了代码对配置表的更改。

,尽管有些建议的方法可能更好,我想出了一种方法,对我来说效果很好,不需要进行大量的设置或维护;e、 g.指定每个字段的数据类型的配置表需要进行大量的设置和维护工作

我的方法包括将数据作为
数据导入。表
使用
fread

t_input_table         = fread(paste(locationConfig, "t_input_table.csv", sep="/"), 
                          header = TRUE, stringsAsFactors=FALSE)
fread
能够很好地区分整数、数字和字符字段。就我而言,日期被视为文本。但是,所有日期字段标题都包含字符串“\u date”。然后,我查找这些字段并确保为它们分配了日期类型:

dateColumns = grep("_date$", colnames(t_input_table))
t_input_table[ , (dateColumns) := lapply(.SD, as.Date, format="%d/%m/%Y"), .SDcols = dateColumns]

虽然建议的一些方法可能更好,但我提出了一种适合我的方法,不需要进行大量的设置或维护;e、 g.指定每个字段的数据类型的配置表需要进行大量的设置和维护工作

我的方法包括将数据作为
数据导入。表
使用
fread

t_input_table         = fread(paste(locationConfig, "t_input_table.csv", sep="/"), 
                          header = TRUE, stringsAsFactors=FALSE)
fread
能够很好地区分整数、数字和字符字段。就我而言,日期被视为文本。但是,所有日期字段标题都包含字符串“\u date”。然后,我查找这些字段并确保为它们分配了日期类型:

dateColumns = grep("_date$", colnames(t_input_table))
t_input_table[ , (dateColumns) := lapply(.SD, as.Date, format="%d/%m/%Y"), .SDcols = dateColumns]

我会选择您自己的扩展配置表的解决方案。您是否考虑过将数据传输到数据库系统,以便为您控制数据类型?请查看
readr
库。它允许您使用非常详细的信息指定列类型,还允许您使用自动类型推断器,这非常好。您也可以介于两者之间,例如,对所有列使用自动键入,但明确覆盖的列除外。它的用途相当广泛。我也处于同样的情况,我存储“cols”对象(使用
readr::cols
创建),其中包含列规范。此
cols
对象可以传递给任何
readr
函数(如
read\u csv2
——请注意下划线)要正确读取文件。我会选择您自己的扩展配置表的解决方案。您是否考虑过将数据传输到一个数据库系统,该系统将为您控制数据类型?请查看
readr
库。它允许您使用非常详细的信息指定列类型,还允许您使用自动类型推断器,这非常好。您也可以介于两者之间,例如,对所有列使用自动键入,但明确覆盖的列除外。它的用途相当广泛。我也处于同样的情况,我存储“cols”对象(使用
readr::cols
创建),其中包含列规范。此
cols
对象可以传递给任何
readr
函数(如
read\u csv2
——请注意下划线)以正确读取文件。