r - 在 R 中计算大于 20 的观察值
问题描述
我在 R 中有一个数据集 df 并试图获得大于 20 的观察数
sample input df:
df <- data.frame(Ensembl_ID = c("ENSG00000284662", "ENSG00000186827", "ENSG00000186891", "ENSG00000160072", "ENSG00000041988"), FS_glm_1_L_Ad_N1_233_233 = c(NA, "11.0704011098281", "18.5580644869131", NA, NA), FS_glm_1_L_Ad_N10_36_36 = c("25.5660669439994", NA, "17.7371918093936", "17.15620204154", NA), FS_glm_1_L_Ad_N2_115_115 = c("26.5660644083686", NA, "11.4006170885388", "17.9862691299736", "9.83546459757003" ), FS_glm_1_L_Ad_N3_84_84 = c("26.5660644053515", NA, "10.9591563938286", NA, NA), FS_glm_1_L_Ad_N4_65_65 = c("26.5660642078305", NA, "11.1498422647029", "10.5876449860129", "9.84781577969005"), FS_glm_1_L_Ad_N5_64_64 = c("26.5660688201853", NA, "18.613395947125", "10.5753792680759", "11.059101026016"), FS_glm_1_L_Ad_N6_55_55 = c("26.5660644039101", NA, "18.478237966938", "10.543187719545", NA), FS_glm_1_L_Ad_N7_32_32 = c("25.5660669436648", NA, "17.9467280294446", "10.0328888122706", NA), FS_glm_1_L_Ad_N8_31_31 = c("25.566069252448", NA, "17.6805603365895", "17.3419854603055", "9.81610669984747"))
class(df)
[1] "data.frame"
我试过了
length(which(as.vector(df[,-1]) > 20))
[1] 11
和
sum(df[,-1] > 20, na.rm=TRUE)
[1] 11
但是,实际发生的次数只有 8 次而不是 11 次,为什么会这样呢?
相同的脚本在另一个数据框中可以正常工作,但在这个 df 中不能正常工作。
解决方案
数据是此数据框中的字符而不是数字。当数字是字符时,就会发生奇怪的事情。
"2" > "13"
#[1] TRUE
使用前将数据更改为数字sum
。
df[-1] <- lapply(df[-1], as.numeric)
sum(df[,-1] > 20, na.rm=TRUE)
#[1] 8
推荐阅读
- django - HTML中的Django ModelForm Widget属性生成
- node.js - 如何使用 Tinymce 输出保存在 mongodb 中的代码?
- ios - AWS Pinpoint 推送通知和 Apple 跟踪透明度
- sql-server - 无法加载 Microsoft.PowerQuerySource
- php - 多次重定向laravel 8
- azure - 通过 ARM 模板或 Powershell 在 Databricks 中配置 Azure DevOps 存储库
- php - wordpress中的新模板不显示在页面属性->模板下
- android - 从 Raspberry Pi 调试 Flutter 应用程序 - 未检测到设备
- google-sheets - 你能数出 VLOOKUP 结果的数量吗?
- excel - Excel SpillParent 和 SpillingToRange 难度