.csvファイルからデータをインポートし、データセットを添付しました。
私の問題:1つの変数が整数形式で、295レベルあります。この変数を使用して他の変数を作成する必要がありますが、レベルの処理方法がわかりません。
これらは何ですか、そしてどのように対処しますか?
Read.table(またはread.csv?-指定しなかった)を使用してデータを読み込む場合は、引数stringsAsFactors = FALSEを追加します。次に、代わりに文字データを取得します。
列に整数を期待している場合は、整数として解釈できないデータが必要なので、読み取った後で数値に変換してください。
txt <- c("x,y,z", "1,2,3", "a,b,c")
d <- read.csv(textConnection(txt))
sapply(d, class)
x y z
##"factor" "factor" "factor"
## we don't want factors, but characters
d <- read.csv(textConnection(txt), stringsAsFactors = FALSE)
sapply(d, class)
# x y z
#"character" "character" "character"
## convert x to numeric, and wear NAs for non numeric data
as.numeric(d$x)
#[1] 1 NA
#Warning message:
#NAs introduced by coercion
最後に、これらの入力の詳細を無視して、係数から整数レベルを抽出する場合は、たとえば、 as.numeric(levels(d $ x))[d $ x] 、? factorの「警告」に従って。
または単に使用することができます
d$x2 = as.numeric(as.character(d$x))
。
明確化に基づいて、read.tableおよびheader = TRUE、stringAsFactors = FALSE、およびas.is =!stringsAsFactorsおよびsep = "、"を使用してreadステートメントをやり直すことをお勧めします。
datinp <- read.table("Rdata.csv", header=TRUE, stringAsFactors=FALSE ,
as.is = !stringsAsFactors , sep=",")
datinp$a <- as.numeric(datinp$a)
datinp$b <- as.numeric(datinp$b)
datinp$ctr <- with(datinp, as.integer(a/b) ) # no loop needed when using vector arithmetic
Summary(data)を実行して、正しく読み込まれたことを確認します。列が本来あるべき数値でない場合は、read.csvのcolClasses引数を調べて強制します。これにより、形式の悪い数値のNA値も発生する可能性があります。
help(read.csv)が役立ちます。