0

この投稿のフォローアップ:

http://r.789695.n4.nabble.com/importing-csv-gets-me-all-16-000-columns-with-quot-NA-quot-td3006480.html

背景: ユーザーが csv ファイルをアップロードできるようにするプログラムを開発しています。現在、次のようなデータセットをテストしています。

Type    Date    Lively  Count
sm  1/13/2010   10  10
sm  1/14/2010   10  20
sm  2/15/2010   20  30
am  4/16/2010   5   42
am  1/17/2010   10  34
am  3/18/2010   40  54
sm  1/19/2010   10  65
sm  4/20/2010   5   67
sm  3/21/2010   40  76
sm  3/21/2010   70  76

ユーザーがこれをインポートすると、すべて問題ありません。私のインポート方法は次のとおりです。

dataset <- read.csv(input$file$datapath)
dataset <- na.omit(dataset)

ただし、ユーザーが上記のテーブルを Excel に保存し、csv として保存したとします。次に、最後の 2 つの列を削除しました。

Type    Date    
sm  1/13/2010   
sm  1/14/2010       
sm  2/15/2010   
am  4/16/2010   
am  1/17/2010   
am  3/18/2010   
sm  1/19/2010   
sm  4/20/2010   
sm  3/21/2010   
sm  3/21/2010   

このテーブルの str() を見ると、Excel では列が既にフォーマットされているため、最後の 2 列には NA 値が含まれています。後でプログラムを台無しにするので、これらの NA 値を取り込むことができません。それらを取り除きたいです。私の na.omit() は NA について何もしていないようです。

を使用して解決策を見つけました

dataset[is.na(dataset)] <- c("")

これらの列を空白の文字に置き換えることができますが、後でアップロードされたデータセットのどの列が文字であるかを確認するときに混乱する可能性があります!

誰かがより良い解決策を持っていますか (別の Excel シートにファイルをアップロードするようにユーザーに指示することはオプションではありません)?

4

2 に答える 2

2

のみを含む列を削除するにはNA:

dataset [,colSums(is.na(dataset )) <nrow(dataset),drop=FALSE]
于 2013-08-13T23:31:25.133 に答える
1

欠損値のみを持つすべての列を削除するには、このソリューションを好みます。

dataset[,sapply(dataset, function(x)!all(is.na(x)))]
于 2013-08-14T03:45:19.333 に答える