gpt4 book ai didi

r - 'empty' 值的处理

转载 作者:行者123 更新时间:2023-12-01 13:05:10 25 4
gpt4 key购买 nike

我正在使用 sqldf-package 将一个 csv 文件导入到 R 中。我有几个数字和字符串变量的缺失值。我注意到缺失值在数据框中留空(而不是用 NA 或其他东西填充)。我想用用户定义的值替换缺失值。显然,像 is.na() 这样的函数在这种情况下将不起作用。

三列玩具数据框:

A  B  C  
3 4
2 4 6
34 23 43
2 5

我要:

A  B  C  
3 4 NA
2 4 6
34 23 43
2 5 NA

提前谢谢你。

最佳答案

假设您在 sqldf 中使用 read.csv.sql 和默认的 sqlite 数据库,它会为 C 生成一个因子列,所以

(1) 只需使用 as.numeric(as.character(...)) 将值转换为数字,如下所示:

> Lines <- "A,B,C
+ 3,4,
+ 2,4,6
+ 34,23,43
+ 2,5,
+ "
> cat(Lines, file = "stest.csv")
> library(sqldf)
> DF <- read.csv.sql("stest.csv")
> str(DF)
'data.frame': 4 obs. of 3 variables:
$ A: int 3 2 34 2
$ B: int 4 4 23 5
$ C: Factor w/ 3 levels "","43","6": 1 3 2 1
> DF$C <- as.numeric(as.character(DF$C))
> str(DF)
'data.frame': 4 obs. of 3 variables:
$ A: int 3 2 34 2
$ B: int 4 4 23 5
$ C: num NA 6 43 NA

(2) 或者如果我们使用 sqldf(..., method = "raw") 那么我们可以只使用 as.numeric:

> DF <- read.csv.sql("stest.csv", method = "raw")
> str(DF)
'data.frame': 4 obs. of 3 variables:
$ A: int 3 2 34 2
$ B: int 4 4 23 5
$ C: chr "" "6" "43" ""
> DF$C <- as.numeric(DF$C)
> str(DF)
'data.frame': 4 obs. of 3 variables:
$ A: int 3 2 34 2
$ B: int 4 4 23 5
$ C: num NA 6 43 NA

(3) 如果您可以使用 read.csv,那么我们会立即填充 NA:

> str(read.csv("stest.csv"))
'data.frame': 4 obs. of 3 variables:
$ A: int 3 2 34 2
$ B: int 4 4 23 5
$ C: int NA 6 43 NA

关于r - 'empty' 值的处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3644510/

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