我正在使用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)) }
答案 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"))