r - 忽略非整数的 R 数据抑制
问题描述
我正在尝试抑制数据框中小于 5
data[data < 5] <- NA
的所有值。在大多数情况下,这可以正常工作。但是,我也有一些值是分类年龄组“0-19”“20-24”等等。我猜 R 正在做减法并删除这些。有没有办法忽略任何不是整数的值?
编辑:以一些虚拟数据为例:
dummydata<-as.data.frame(rbind(c('0-19','4','5'),c('20-24','6','1')))
> dummydata
[,1] [,2] [,3]
[1,] "0-19" "4" "5"
[2,] "20-24" "6" "1"
dummydata[dummydata < 5] <- NA
> dummydata
[,1] [,2] [,3]
[1,] NA NA "5"
[2,] NA "6" NA
期望的输出:
[,1] [,2] [,3]
[1,] "0-19" NA "5"
[2,] "20-24" "6" NA
解决方案
我们可以先找出其中只有数字的值 (no '-'
),将它们转换为 numeric,如果小于 5 则转换为NA
。
dummydata[] <- lapply(dummydata, function(x) {
tmp <- grepl('^\\d+$', x)
x[tmp][as.numeric(x[tmp]) < 5] <- NA
x
})
dummydata
# V1 V2 V3
#1 0-19 <NA> 5
#2 20-24 6 <NA>
推荐阅读
- c++ - OpenCV CV findHomography 断言错误计数器 = > 4
- git - Git在合并后恢复提交
- java - 无法解析符号“服务”导入 com.google.api.services;
- html - 将引导列表项与卡片底部对齐
- android - 无法加载 AppCompat ActionBar,出现未知错误。Android Studio 3.1.3
- javascript - 如何为高图表饼设置单独的颜色
- chef-infra - 基于数据包更改的厨师食谱执行
- java - 一行Hello World java项目,非socket上的Socket操作:configureBlocking
- ios - 当 iOS 虚拟键盘出现在屏幕上时,是否有已知的解决方法可以解决在错误位置渲染的固定元素?
- html - 如何在 Microdata 中组合两种 Schema.org 类型?