r - 如何删除在R中具有分类值的多列?

标签 r dataframe

我知道如何按名称删除列,但我不太确定如何删除具有分类值的列。可以手动查看哪些列具有分类值,但使用 R 代码对我来说并不直观。如何检测具有分类值的列?有什么办法可以做到这一点?

最小数据

mydf=structure(list(taken_time = c(15L, 5L, 39L, -21L, 46L, 121L), 
    ap6xl = c(203.2893857, 4.858269406, 2, 14220, 218.2215352, 
    115.5227706), pct5 = c(732.074484, 25.67901235, 1.01, 120.0477168, 
    3621.328567, 79.30561111), crp4 = c(196115424.7, 1073624.455, 
    1.23, 1457496.474, 10343851.7, 81288042.73), age = c(52L, 
    74L, 52L, 67L, 82L, 67L), gender = structure(c(2L, 2L, 2L, 
    1L, 2L, 1L), .Label = c("F", "M"), class = "factor"), inpatient_readmission_time_rtd = c(79.78819444, 
    57.59068053, 57.59068053, 57.59068053, 57.59068053, 9.893055556
    ), infection_flag = c(0L, 0L, 1L, 1L, 0L, 1L), temperature_value = c(98.9, 
    98.9, 98, 101.3, 99.5, 98.1), heartrate_value = c(106, 61, 
    78, 91, 120, 68), pH_result_time_rta = c(11, 85.50402145, 
    85.50402145, 85.50402145, 85.50402145, 85.50402145), gcst_value = c(15, 
    15, 15, 14.63769293, 15, 14.63769293)), row.names = c(NA, 
6L), class = "data.frame")

而不是手动输入具有分类值的列的名称,有什么方法可以检测分类列并删除它?

我关心的是诸如数据框可能有超过 10 个分类列的情况,这有点痛苦,所以我很好奇是否可以使用 R。有什么想法吗?

例如,我可以通过手动查看哪些是分类列来为上述数据框执行此操作:
mydf <- mydf[!names(mydf) %in% c("gender", "infection_flag")]

有什么方法可以检测哪些是分类列并将其删除以进行数值计算?任何的想法?

最佳答案

带有 base R 的选项

i1 <- sapply(mydf, is.numeric)
df[i1]

关于r - 如何删除在R中具有分类值的多列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61824515/

相关文章:

r - 在 plot.xts 中设置颜色

r - 按几列对data.table进行分组时如何在输出中保留列

r - R/gtsummary:排除一些p值并更改脚注

python - 使用迭代器迭代不同的数据帧

r - 在 R4.0.0 中合并数据帧比 R3.6.3 慢 60 倍?

r - igraph R 中的边缘中心性度量

python-3.x - 从 pandas 数据框中的类别(列)中选择前 n 行并对其执行计算

pandas - 提高函数的性能(速度)

R中基于大数据集中重复数据不足的行删除

r - 使用 mclapply、foreach 或 [r] 中的其他东西并行操作对象?