r - 如何折叠/减少因子水平的数量
问题描述
我需要一些帮助来减少因子中的级别数量,我有一个包含 Sqft_basement 列的数据集,当我使用级别函数时,它返回该列中出现的每个数字,我将如何更改它以便级别是是或否取决于它是大于零还是等于零?
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
导致这个。
我想知道是否有其他方法可以做到这一点,因为我使用的方法感觉非常粗糙。
解决方案
将平方英尺数存储在一个因子中是一个坏主意,但如果这是您获取数据的方式,那么您将不得不处理它。但是,您可能误解了您的导师——也许他的意思是说结果是/否信息应该存储在一个因子中?那会更有意义。
无论如何,让我们生成一些数据来玩:
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"))
推荐阅读
- go - 如何在保持测试可比性的同时使用动态错误?
- html - 如何使用溢出自动仅停止第一个 li 在 ul li 列表中滚动?
- tensorflow - 如何更改 retrain.py 以获取 b64 图像
- python - 计算单词中字母的出现次数到熊猫数据框
- java - 我的 PITEST 不会运行。覆盖生成minion异常退出。我需要帮助才能正确配置我的 pom.xml
- python-3.x - pycharm 2019 优化导入后 Matplotlib 和 numpy 导入不起作用
- c# - 如何在不枚举数据的情况下进行异步查询?
- bash - 如何将多列拆分为几列?
- ocaml - 为什么只需要迭代有限流时这个程序不会停止?
- c# - 一对一关系 EF6 和主键的问题