用单词替换列中的某些值

布卡祖

我的目标是根据在未来分类测试中使用的范围将特定列的数值替换为某些单词。我试图在下面更改此数据框:

让我们将此数据框称为 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

另一个不做多个表达式的方便选项是cutfrombase 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章