web-dev-qa-db-ja.com

.csvを読み取るときに欠損値をNAに置き換える最良の方法は何ですか?

多くの欠損値を含む.csvデータセットがあり、テーブルを読み込んだときにRがそれらをすべて同じ方法(「正しい」方法)で認識できるようにしたい。

_import = read.csv("/Users/dataset.csv", 
                  header =T, na.strings=c(""))
_

このスクリプトは、すべての空のセルを何かで埋めますが、一貫性はありません。 head(import)でデータを見ると、欠落しているセルの一部が_<NA>_で埋められており、欠落しているセルの一部がNAで埋められています。データセットの分析を開始するときに、Rがこれらの2つの方法で欠損値を識別することを恐れているので、これらの欠損値をインポートで均一に読み取らせたいと思います。

最後に、csvファイルの一部の欠損値は、ピリオドのみで表されています。また、Rにインポートするときに、これらの期間が正しい欠損値表記で表されるようにしたいと思います。

15
Luke

<NA>NAは、一部の列が文字であり、一部が数値であることを意味します。それがすべてです。絶対に何も悪いことではありません。

ベンが前述したように、csvの欠損値の一部が単一のピリオド.で表されている場合は、次のようにしてNAsとして扱う必要がある値のベクトルを指定できます。

na.strings=c("",".","NA")

read.csvの引数として。

16
joran

はい、同じ問題がありました。私が実行したとき:

rm(list=ls())
getwd()
setwd("C:/Users/JOSEP/Documents/UNI/Estadística Nitrats/Estadistica/Nitrats")
Nitrats_bo<- read.csv2("C:/Users/JOSEP/Documents/UNI/Estadística Nitrats/Dades/Nitrats Osona. Mireia.ActualitzatMunicipis_2016.csv", header=T)
head(Nitrats_bo)

作る:

 X2005 X2006 X2007 X2008 X2009 X2010 X2011 X2012 X2013 X2014 X2015 X2016
1   0.4   0.2   0,6   0,7         0,6   0,9     1   0.7   1.3   0.9     1
2   0.4   0.8    NR    NR         0,7   0,8   0,9   1.1   1.1   0.9    NA
3    NA    NA                                        NA    NA    NA    NA
4    NA    NA                                        NA    NA    NA    NA
5    NA    NA                                        NA    NA    NA    NA
6    NA    NA                                        NA    NA    NA    NA

「NR」要素があったからです。

だから、私はこの「NR」要素を捨てて、実行すると...

X2005 X2006 X2007 X2008 X2009 X2010 X2011 X2012 X2013 X2014 X2015 X2016
1   0.4   0.2   0.6   0.7    NA   0.6   0.9   1.0   0.7   1.3   0.9     1
2   0.4   0.8    NA    NA    NA   0.7   0.8   0.9   1.1   1.1   0.9    NA
3    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA
4    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA
5    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA
6    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA

そして、それは大丈夫です!

私は尋ねますが、同じdf列で数値と因子を組み合わせる方法を尋ねます。

ありがとうございました!

0
JosepA

同等の関数と引数がread_csv()readrである、より柔軟なnaパッケージを使用することもできます。

library(readr)
read_csv("file.csv", na = c(".", ".."))
0
Joe