Обработка «пустых» значений - PullRequest
3 голосов
/ 05 сентября 2010

Я импортирую CSV-файл в R с помощью sqldf -пакета.У меня есть несколько пропущенных значений для числовых и строковых переменных.Я замечаю, что пропущенные значения остаются пустыми в кадре данных (в отличие от заполнения 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 

Спасибозаранее.

1 Ответ

4 голосов
/ 05 сентября 2010

Предполагая, что вы используете read.csv.sql в sqldf с базой данных 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...