gpt4 book ai didi

R 中包含列最小值的行

转载 作者:行者123 更新时间:2023-12-02 09:32:46 24 4
gpt4 key购买 nike

我正在 R 中处理向量和矩阵。

在矩阵中,我想返回具有特定列(例如第 9 列)最小值的所有行。该列的值可以是 "Not Available"还。我怎样才能做到这一点?

要检查我尝试过的不可用值 data <- data[data[,9] != "Not Available"]但它没有给我预期的结果。

例如 -

Code  Name     Number
1 India 2.3
2 America 3.5
3 China Not Available
4 Europe 1.2
5 Japan 1.2

我想获取列 Number 具有最小值的所有行。所需的输出是

    Code  Name     Number
4 Europe 1.2
5 Japan 1.2

必须忽略不可用的值

最佳答案

通过在列中包含“非数字”元素,当我们使用 read.csv/read.table 读取数据时,该列将转换为“字符”或“因子”类。如果我们使用stringsAsFactors=FALSE,列类将为“字符”,否则默认为“因子”。

假设您使用stringsAsFactors=FALSE读取数据集,那么我们可以通过as.numeric将列更改为“数字”,非数字元素将被强制转换至NA

 df1$Number <- as.numeric(df1$Number)

如果列是“factor”类,我们可能需要as.numeric(as.character(df1$Number))。然后,我们用“Number”列的“min”值对数据集进行子集化。

 subset(df1, Number==min(Number, na.rm=TRUE))
# Code Name Number
#4 4 Europe 1.2
#5 5 Japan 1.2

这也可以在不更改“数字”类的情况下完成(即将其保留为“字符”列,但不推荐)

 subset(df1, Number== min( as.numeric(Number[Number!='Not Available'])))
# Code Name Number
#4 4 Europe 1.2
#5 5 Japan 1.2

最好的选择是通过在 na.strings 中指定“不可用”来读取数据集,它将转换为 NA

 df1 <- read.table('yourfile.txt', header=TRUE, na.strings='Not Available')

数据

 df1 <- structure(list(Code = 1:5, Name = c("India", "America", "China", 
"Europe", "Japan"), Number = c("2.3", "3.5", "Not Available",
"1.2", "1.2")), .Names = c("Code", "Name", "Number"),
class = "data.frame", row.names = c(NA, -5L))

关于R 中包含列最小值的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31052462/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com