gpt4 book ai didi

r - 如何删除数据框中的 "Not Available"

转载 作者:行者123 更新时间:2023-12-01 09:52:50 25 4
gpt4 key购买 nike

我想删除以下数据框中的“不可用”,但是当我使用以下代码将 Number 更改为数字时,“不可用”变为 4:

c1 <- c("India", "America", "China", "Europe", "Japan")
c2 <- c(2.3, 3.5, "Not Available", 1.2, 1.2)
data <- data.frame(Name=c1, Number=c2)
data$Number <- as.numeric(data$Number)

结果是:

data

## Name Number
## 1 India 2
## 2 America 3
## 3 China 4
## 4 Europe 1
## 5 Japan 1

如何删除此数据框中的“不可用”行?

最佳答案

这是因为:

  1. R data.frame 每列只允许一个类的数据。
  2. 当您创建 data.frame 时,默认行为是将 character 列强制转换为 factor,以数字形式存储带有标签的值(对应于因子水平)。您的 c2 向量是一个 character 向量,因为它有一个字符元素(“不可用”),因此 Number 列>data 是一个 factor 列。
  3. 当您将一个因子直接转换为numeric 时,生成的数字表示因子级别。

要实现您所追求的行为,您可以在创建 data.frame 时防止字符数据被强制转换为一个因素:

data <- data.frame(Name=c1, Number=c2, stringsAsFactors=FALSE)
data$Number <- as.numeric(data$Number)

data
## Name Number
## 1 India 2.3
## 2 America 3.5
## 3 China NA
## 4 Europe 1.2
## 5 Japan 1.2

或者,您可以通过字符将因子强制转换为数字:

data$Number <- as.numeric(as.character(data$Number))

这些选项都不会按照您的要求“删除不可用的行”。它们只是将“不可用”元素(以及 Number 列的任何其他“文本”元素)转换为 NA。要删除包含“不可用”的行,您可以:

data <- data.frame(Name=c1, Number=c2, stringsAsFactors=FALSE)
na.omit(data)

或者,使用您的原始 data 对象:

data <- data.frame(Name=c1, Number=c2)
data[data$Number != 'Not Available', ]

关于r - 如何删除数据框中的 "Not Available",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34562392/

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