我需要一些帮助来减少因子水平,我有一个带有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
结果。
我想知道是否有其他方法可以做到这一点,因为我使用的方法感觉很粗糙。
答案 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"))