我有一个列名为"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)))