複数の異なるデータ型(数値、文字、タイムスタンプ)で構成されるデータフレームを処理していますが、残念ながらそれらのすべてが文字として受け取られます。したがって、私はそれらを「適切な」フォーマットに動的に、そして可能な限り効率的に強制する必要があります。データフレームの変数を適切な形式に変換する
は、次の例を考えてみましょう:
df <- data.frame("val1" = c("1","2","3","4"), "val2" = c("A", "B", "C", "D"), stringsAsFactors = FALSE)
私は明らかにval1
が文字として残る数値とval2
になりたいです。したがって、私の結果は次のようになります。
'data.frame': 4 obs. of 2 variables:
$ val1: num 1 2 3 4
$ val2: chr "A" "B" "C" "D"
は、今私は強制がNULL
につながるかどうかをチェックすることでこれを達成して、そうでない場合強制変換で進行しています:
res <- as.data.frame(lapply(df, function(x){
x <- sapply(x, function(y) {
if (is.na(as.numeric(y))) {
return(y)
} else {
y <- as.numeric(y)
return(y)
}
})
return(x)
}), stringsAsFactors = FALSE)
- が、私はこの を達成するためのより高速な方法があることを疑う:
- 、これはそうではありませんが、(結果を参照)
- これは不適切と思われる、すなわち
しかし、これは複数の問題の正解として私に当たりません他のデータ型を処理するとき、私は警告In FUN(X[[i]], ...) : NAs introduced by coercion
を受け取る何らかの理由
を日付に一般的な、ヒューリスティックなアプローチがありますこれ、または別の、より持続可能な解決策?ありがとう
'data.frame(lapply(DF、type.convert))' ** OR ** 'ライブラリ(readr)。 data.frame(lapply(df、function(x)parse_guess(x))) 'は動作するかもしれませんが、私は確信していません –