关于<na>的R中的警告消息

时间:2015-08-09 04:28:50

标签: r dataframe na

我有一个data.frame格式:

Set_1     Set_2     Set_3     Set_4     Set_5     Set_6     Set_7
1.42      0.98      <NA>      <NA>      0.98      2.91      0.40
<NA>      1.11      1.23      1.54      1.99      <NA>      <NA>
<NA>      1.02      0.99      <NA>      0.99      <NA>      1.00
<NA>      <NA>      1.88      0.87      0.32      0.55      1.33

我正在尝试计算每列超过2.0的百分比

我正在使用代码percent <- colSums(df > 2.0, na.rm=TRUE)/colSums(!is.na(df))

但我不断收到警告信息:In Ops.factor(left, right) : > not meaningful for factors。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

您可以将列转换为numeric,然后继续使用百分数

dat[] <- lapply(dat, function(x) as.numeric(as.character(x)))
sapply(dat, function(x) sum(x>2, na.rm=T)/nrow(dat))

检查列类型的有用方法是

sapply(dat, class)

另外,正如@RichardScriven指出的那样,你可以在转换过程中摆脱烦人的警告

dat[] <- suppressWarnings(lapply(dat, function(x) as.numeric(as.character(x))))