我的目标是根据在未来分类测试中使用的范围将特定列的数值替换为某些单词。我试图在下面更改此数据框:
让我们将此数据框称为 DF
主题ID | 柱子 | B列 | C栏 |
---|---|---|---|
主题1 | 38 | 2.3 | 2.1 |
主题2 | 12 | 2.1 | 2.0 |
主题3 | 1 | 1.1 | 1.9 |
主题 4 | 34 | 3.2 | 1.5 |
主题5 | 1 | 1.7 | 1.5 |
主题6 | 56 | 3.9 | 1.7 |
要实现诸如此处的数据帧:
主题ID | 柱子 | B列 | C栏 |
---|---|---|---|
主题1 | 中 | 2.3 | 2.1 |
主题2 | 低的 | 2.1 | 2.0 |
主题3 | 低的 | 1.1 | 1.9 |
主题 4 | 中 | 3.2 | 1.5 |
主题5 | 低的 | 1.7 | 1.5 |
主题6 | 高的 | 3.9 | 1.7 |
因此,在这种情况下,我只想根据数据值所在的特定范围更改 columnA 的值名称。
对于此示例: Low 值表示小于 30 的值。 Mid 值表示介于 30 和 50 之间的值 High 值表示值大于 50
什么是最好的方法来做到这一点?
我们可以用 case_when
library(dplyr)
DF <- DF %>%
mutate(ColumnA = case_when(ColumnA < 30 ~ "Low",
between(ColumnA, 30, 50) ~ "Mid", TRUE ~ "High"))
DF
SubjectID ColumnA ColumnB ColumnC
1 Subject1 Mid 2.3 2.1
2 Subject2 Low 2.1 2.0
3 Subject3 Low 1.1 1.9
4 Subject4 Mid 3.2 1.5
5 Subject5 Low 1.7 1.5
6 Subject6 High 3.9 1.7
另一个不做多个表达式的方便选项是cut
frombase R
cut(DF$ColumnA, breaks = c(-Inf, 30, 50, Inf), labels = c("Low", "Mid", "High"))
[1] Mid Low Low Mid Low High
Levels: Low Mid High
DF <- structure(list(SubjectID = c("Subject1", "Subject2", "Subject3",
"Subject4", "Subject5", "Subject6"), ColumnA = c(38L, 12L, 1L,
34L, 1L, 56L), ColumnB = c(2.3, 2.1, 1.1, 3.2, 1.7, 3.9), ColumnC = c(2.1,
2, 1.9, 1.5, 1.5, 1.7)), class = "data.frame", row.names = c(NA,
-6L))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句