0

.csv をいくつかの異なる変数型で R に読み込んでいますが、そのうちの 2 つは数値 (10 進数の緯度と経度) ですが、文字として読み込まれます。これを回避するために、読み込んだ後に「as.numeric」と定義します。これを行うよりエレガントな方法はありますか? おそらく「read.csv」の呼び出し内ですか?

d <- read.csv("data.csv",stringsAsFactors=F)
> str(d)
'data.frame':   467674 obs. of  7 variables:
 $ station     : chr  "USC00036506" "USC00036506" "USC00036506" "USC00036506" ...
 $ station_name: chr  "SEARCY AR US" "SEARCY AR US" "SEARCY AR US" "SEARCY AR US" ...
 $ lat         : chr  "35.25" "35.25" "35.25" "35.25" ...
 $ lon         : chr  "-91.75" "-91.75" "-91.75" "-91.75" ...
 $ tmax        : int  50 50 39 100 72 61 -17 -44 6 0 ...
 $ tmin        : int  -39 -39 -89 -61 -6 -83 -144 -150 -161 -128 ...
 $ tobs        : int  33 22 17 61 61 -78 -50 -94 -22 -11 ...

d$lat <- as.numeric(d$lat)
d$lon <- as.numeric(d$lon)

> str(d)
'data.frame':   467674 obs. of  7 variables:
 $ station     : chr  "USC00036506" "USC00036506" "USC00036506" "USC00036506" ...
 $ station_name: chr  "SEARCY AR US" "SEARCY AR US" "SEARCY AR US" "SEARCY AR US" ...
 $ lat         : num  35.2 35.2 35.2 35.2 35.2 ...
 $ lon         : num  -91.8 -91.8 -91.8 -91.8 -91.8 ...
 $ tmax        : int  50 50 39 100 72 61 -17 -44 6 0 ...
 $ tmin        : int  -39 -39 -89 -61 -6 -83 -144 -150 -161 -128 ...
 $ tobs        : int  33 22 17 61 61 -78 -50 -94 -22 -11 ...
4

2 に答える 2

10

列クラスを設定できます。これを試して:

cls <- c(lat="numeric", lon="numeric")
read.csv("data.csv", colClasses=cls, stringsAsFactors=FALSE)

注:テストデータを提供していないため、テストされていません。

于 2013-06-30T17:51:50.447 に答える
2

私はついに何が間違っていたのかを見つけました。「NA」は、元のファイルで「不明」としてエンコードされました(Rに読み込む前)。私は今、私がかなり密集していたことに気づきました。皆様のご理解とご協力に感謝いたします。これは私が最終的に使用したコードです:

d <- read.csv("data.csv",stringsAsFactors=F, na.strings="unknown")
于 2013-07-01T20:40:46.423 に答える