2016-10-07 9 views
1

私の列の各値が数値か数値以外の値かどうかを調べたいと思います。列の各値が文字列か数値かを確認してください

df = data.frame(help = c(456, 'superduper'), 
       correct_answer = c("numeric","string")) 

私は、行単位で、is.numericまたはis.character試してみたが、このdoesntのは全体の列が文字として符号化されるように動作するように見えます。

私はこれが基本的な質問であることを知っていますが、助けが必要です。数値文字列をチェックするためにここに

+1

のような番号の形式のバリエーションのために働くだろうということであるあなたは、例えば、数値に強制変換の可能性をチェックすることもでき - 'is.na(as.numeric(as.character(df $ help))))なぜ数値とテキストデータを最初に組み合わせたのですか? – thelatemail

+0

'is.numeric(df $ help)'を使って何が問題になっていますか? –

+0

@TimBiegeleisen - 私は、数字と文字列がすべて文字変数にエンコードされていることが重要だと思います。 – thelatemail

答えて

3

私の最初の考えは、数値を強制的に数値に変換できるかどうかを検討することです。例えば:

is.na(as.numeric(as.character(df$help))) 
#[1] FALSE TRUE 

ボーナスは、これは33.2あるいは3e5

+0

賢い、私はそれが好き – runningbirds

+0

@runningbirds 'suppressWarnings'はこの場合には便利だろう – rawr

1

1つのオプションは、空の文字列にすべての桁を交換し、その結果の長さがゼロになるかどうかを確認するために、次のようになります。

is.help.numeric <- nchar(gsub("\\d+(\\.\\d+)?", "", df$help) == 0) 

helpの中から、指定したエントリが一つでも非数字を持っている場合is.help.numericの対応するエントリはFALSEになります。

関連する問題