【问题标题】:How to specify the Ordering of categorical variables in read.csv in R如何在 R 中的 read.csv 中指定分类变量的排序
【发布时间】:2013-09-18 19:18:30
【问题描述】:

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

【问题讨论】:

  • 你没有。使用factor 读取因子并按所需顺序指定级别后,您可以对其重新排序。

标签: r read.table


【解决方案1】:

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

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

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 时,有一些方法可以做到这一点,但它们有点巴洛克式和复杂性,我们需要看到一个用例来证明这一努力的合理性。

【讨论】:

  • 我想这样做是因为最终我将从 read.csv 数据框构建逻辑回归模型,并且我想在进行任何逻辑回归建模之前指定因子的顺序。这是否可以作为在 read.csv 期间执行此操作的用例?
  • 据我所见。您需要为每一列定义一个单独的类,使用 var &lt;- factor(var, levels=new_order) 似乎比所有这些都容易。
  • 我将使用大型数据集并希望脚本具有内存效率。在 read.csv 函数之后更改顺序将导致内存使用量增加,这是我真正想要避免的。所以我希望我可以让它在 read.csv 中工作。
  • 我想我可以通过创建自己的类来实现它....setClass("customFactor") setAs("character","customFactor", function(from){ SpecifyOrders(from) } ) SpecifyOrders
  • 你可以在这里找到一个工作的例子:stackoverflow.com/questions/5068705/…
【解决方案2】:

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

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

【讨论】:

  • 仅供参考 - 如果这在内存使用方面真的更有效,我会感到非常惊讶。无论您调用factor 以重置read.table 内的级别还是之后都应该具有完全相同的内存含义。如果是我,我会确定这一点,并包括做一些事情,比如简单地调用levels&lt;-,这不应该有太多开销。
  • 你是对的,我想我可能会在阅读 csv 后进行重构,而不是创建自己的类
猜你喜欢
  • 2011-09-30
  • 1970-01-01
  • 2023-02-22
  • 2015-06-14
  • 2011-05-26
  • 2019-10-14
  • 2011-02-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多