如何崩溃/减少因子水平的数量

时间:2019-09-11 14:34:41

标签: r

我需要一些帮助来减少因子水平,我有一个带有Sqft_basement列的数据集,当我使用levels函数时,它将返回该列中出现的每个数字,我将如何对其进行更改,以便级别是是还是否,取决于其大于零还是等于零?

fbasement <- factor(House_Data$sqft_basement)
levels(fbasement)[levels(fbasement) > 0] <- "yes"
levels(fbasement)[levels(fbasement) <= 0] <- "no"
table(fbasement)



  fbasement
  no  yes 
  3677 2323 

结果。

我想知道是否有其他方法可以做到这一点,因为我使用的方法感觉很粗糙。

1 个答案:

答案 0 :(得分:0)

将平方英尺数存储在一个因素中不是一个好主意,但是,如果这是您获取数据的方式,则必须进行处理。但是,您可能误解了您的讲师–也许他是想说应将产生的是/否信息存储在一个因素中?那会更有意义。

无论如何,让我们生成一些数据来玩:

foo <- factor(sample(0:10, 100, rep=TRUE))

在进行其他任何操作之前,我先将数据改回它的真实值(数字):

foo <- as.numeric(as.character(foo))

现在,我可能只想得到一个简单的布尔结果:

foo>0

如果出于某种原因而需要“是”和“否”,则可以转换为:

ifelse(foo>0, "yes", "no")

另一种可能更优雅的方法是使用cut函数:

cut(foo, breaks=c(-Inf,0,Inf), labels=c("no", "yes"))