1

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

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

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

2 回答 2

2

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

要使用该订单重新调整级别,您可以在数据输入后执行此操作:

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

(尽管这已经是顺序,因为默认排序是 alpha 排序的。)如果您想从该因子中获取值 0-3:

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

在 read.table 或 read.csv 时有一些方法可以做到这一点,但它们有点巴洛克式和复杂,我们需要看到一个用例来证明这一努力的合理性。

于 2013-09-18T19:33:19.157 回答
1

所以我想我想出了答案...

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"))
于 2013-09-18T20:57:32.967 回答