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

时间:2013-09-18 19:18:30

标签: r read.table

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

如果“液体型”栏中有以下因素: - “水”,“果汁”,“苏打”,“酒精”,我想控制因素的排序。小心说

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)) }  

2 个答案:

答案 0 :(得分:2)

一个问题是“为什么?”。和其他相关的问题:你只是想要重新考虑因素吗?或者你真的想要一个有序因子吗?或者你想重新编码为数值?

要按照该顺序进行归档,您可以在输入数据后执行此操作:

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

(虽然这已经是订单,因为默认排序是按字母顺序排序的。)如果你想从那个因素得到0-3的值:

Liquid.type <- as.numeric(Liquid.type) -1

有一些方法可以在read.table或read.csv时执行此操作,但它们更像是巴洛克式和涉及的,我们需要查看用例来证明这种努力的合理性。

答案 1 :(得分:0)

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

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"))