我知道如何按名称删除列,但我不太确定如何删除具有分类值的列。可以手动查看哪些列具有分类值,但使用 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/