如何在R中的read.csv中指定分类变量的顺序

如何在R中的read.csv中指定分类变量的顺序,r,read.table,R,Read.table,我正在使用read.csv函数和colClasses参数来读取我的csv文件。我想要实现的是,对于所有属于“因子”的colclass,我想要指定因子的顺序 如果列“液体类型”有以下因素:-“水”、“果汁”、“苏打水”、“酒精”,我想控制因素的顺序 Water = 3 Juice=1 Soda=2 Alcohol =0 那么如何控制read.csv中的因子顺序呢 编辑:您的评论,格式如下: setClass("customFactor") setAs("character", "custom

我正在使用
read.csv
函数和
colClasses
参数来读取我的csv文件。我想要实现的是,对于所有属于“因子”的
colclass
,我想要指定因子的顺序

如果列“液体类型”有以下因素:-“水”、“果汁”、“苏打水”、“酒精”,我想控制因素的顺序

Water = 3
Juice=1
Soda=2
Alcohol =0 
那么如何控制
read.csv
中的因子顺序呢

编辑:您的评论,格式如下:

setClass("customFactor") 
setAs("character", "customFactor", function(from) {SpecifyOrders(from)}) 
SpecifyOrders <- function(from) { 
       from<- factor(from, levels=c(new_order)) }  
setClass(“自定义因子”)
setAs(“字符”、“自定义因子”、函数(从){specifiorders(从)})
SpecificyOrders一个问题是“为什么?”。以及其他相关问题:您是只想重新定义因子?还是真的想要一个有序因子?还是想重新编码为数值

要按该顺序重新升级,您可以在数据输入后执行此操作:

Liquid.type <- factor(Liquid.type, levels=c("Alcohol","Juice","Soda","Water"))

Liquid.type所以我想我找到了答案

setClass("customFactor") 
setAs("character","customFactor", function(from){ SpecifyOrders(from) } ) 
SpecifyOrders <- function(from) { from<- factor(from, levels=c(new_order)) }

Dataframe <- read.csv(data=data, colClasses=c("character","customFactor","numeric"))
setClass(“自定义因子”)
setAs(“字符”、“自定义因子”、函数(从){specifiorders(从)})

您不需要指定者。一旦使用
因子
读取因子,并按照您想要的顺序指定级别,您就可以对因子重新排序。我之所以要这样做,是因为最终我将从read.csv数据框构建逻辑回归模型,并且我想在进行任何逻辑回归模型之前指定因子的顺序g、 这是否可以作为在read.csv期间执行此操作的用例?我看不到。您需要为每个列定义一个单独的类,并使用
var。我将处理大型数据集,并希望脚本具有内存效率。在read.csv函数之后更改顺序将导致内存使用量增加,我确实需要这样做想要避免。所以我希望我能在read.csv中使用它。我想我是通过创建自己的类来实现的……setClass(“customFactor”)setAs(“character”,“customFactor”,function(from){specifictorders(from)})说明符您可以在这里找到一个有效的示例:仅供参考-如果这在内存使用方面真的更有效,我会非常惊讶。无论您调用
factor
重置
read.table
中的级别还是之后,都应该具有完全相同的内存含义。如果是我,我会对此进行基准测试,以确保d包括简单调用
levels之类的操作。你是对的,我想我可能会在阅读csv后进行重构,而不是创建自己的类
setClass("customFactor") 
setAs("character","customFactor", function(from){ SpecifyOrders(from) } ) 
SpecifyOrders <- function(from) { from<- factor(from, levels=c(new_order)) }

Dataframe <- read.csv(data=data, colClasses=c("character","customFactor","numeric"))