2

私は緊急治療室の ICD-9 コード データ (健康診断) を扱っています。これは、小数点以下 2 桁までの 3 桁のコードです (例: 499、499.1、499.51 など)。一部の特殊コードには、「V10.46」など、最初の数字の代わりに文字「V」が含まれています。

すべての緊急治療室の訪問 (行) には、最大 11 個の診断コード (列) を含めることができるため、reshape() を使用してデータセットを長い形式に変更しました。ここで、 floor() を使用してこれらの小数点を削除します。しかし、R はキャラクターで何かをフロアにすることはできません! 次のエラーが表示されます: Math.factor(dtl$diag) のエラー: 因子に対してフロアが意味をなさない

この投稿にはある程度の関連性がありましたが、より良い方法があるかどうか疑問に思っていますか? R: 変数内の文字観測を削除します

何か案は?

4

3 に答える 3

5

正規表現を使用して、ドットとその後のすべてを削除できます。

x <- c("499", "499.1", "499.51", "V10.46")
gsub("\\..*", "", x)
# Output:
# [1] "499" "499" "499" "V10"
于 2012-02-18T23:58:36.507 に答える
3

@Vincent Zoonekindの優れた回答から構築します。目的がfloorデータで使用することであった場合は、「V」を取り除いfloorて残りを呼び出すことができます。

x <- c("499", "499.1", "499.51", "V10.46")
# replace all occurences of "V" with nothing ("") in x:
x.stripped <- gsub("V", "", x) 
# convert to numeric so we can use floor():
x.floor <- floor(as.numeric(x.stripped))

「要素には意味がありません」というエラーメッセージに基づいて、データのその列は文字列として読み込まれ(一部の行に「V」があるため)、Rのデフォルトの動作は文字列列を次のように変換することです因子 (カテゴリなど)。

gsub因子に取り組んでいないというエラーが発生した場合は、最初に列を文字列に変換する必要があります。

mydf$columname <- as.character(mydf$columnname)

そして、以前と同じように続行できます。

于 2012-02-19T00:31:48.333 に答える
1

最初の 3 文字には、部分文字列関数を使用できます。

icd9 <- factor(c("499", "499.1", "499.51", "V10.46"))
substr(as.character(icd9),1,3)# as.character is used 
                              # because icd9 is factor in your data

出力

[1] "499" "499" "499" "V10"
于 2012-02-19T11:22:14.780 に答える