需要通过排除字符来获取最大值



我有一个列名为"Bucket"的数据框x。

Bucket
0
1
2
3
4
4+

当我取此列的最大值时,我得到的值为 4+,那么如何排除 4+ 并将输出为 4。

max(unique(x$Bucket)) is something i have tried but im getting the output as 4+ 

简单的方法是将数据转换为数字,这将使像4+这样的输入NA,然后采取max

max(as.numeric(as.character(x$Bucket)), na.rm = TRUE)
#[1] 4

或者如果你想把 4+ 读成 4,5+ 读成 5,你可以做

max(readr::parse_number(as.character(x$Bucket)))

如果您想将所有4+替换为4然后找到最大值:

x$Bucket <- as.integer(gsub("4+","4",x%Bucket)) # Turn all the `4+` rows to `4`.
max(x$Bucket)

如果要排除所有4+并取其余行的最大值:

max(as.numeric(as.character(x[x$Bucket != "4+", "Bucket"])))

在最后一种情况下,您必须包括as.character然后as.integer因为x$Bucket是一个因素,as.integer会将每个类别转换为其级别。这可能会导致一些错误,因此最好将列读取为字符串,然后将这些文本字符转换为整数。

在第一种情况下,此步骤不是必需的,因为gsub返回字符。

我们可以做

max(as.numeric(sub("\+", "", df$Bucket)))

相关内容

  • 没有找到相关文章