首页 > 解决方案 > 忽略非整数的 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 

标签: r

解决方案


我们可以先找出其中只有数字的值 (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>

推荐阅读