我有一个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
。我该如何解决这个问题?
答案 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))))