当前位置:  开发笔记 > 编程语言 > 正文

如何删除数据框中的"不可用"

如何解决《如何删除数据框中的"不可用"》经验,为你挑选了1个好方法。

我想删除以下数据框中的"不可用",但是当我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> jbaums..:

这是因为:

    R data.frame只允许每列一类数据.

    创建a时data.frame,默认行为是character要强制转换的列factor,它们将作为数值(对应于因子级别)与标签一起存储.你的c2向量是一个character向量,因为它有一个字符元素("Not Available"),因此Numberdata是一factor列.

    当您直接强制使用因子时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', ]

推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有