我使用的是R,我的資料是這樣的,
我使用的是R,我的資料是這樣的。
a <- data. frame(id=c(1。 2。 2,2。 3)。 icd9=c("0781"/span>。 "00840"。 "8660", "7100", "25011"))
我想在第二列的四位數和五位數的數字中,在第三位數后放置一個點。我正在R中使用gsub,但沒有得到想要的輸出。我想要的資料框架是:
id icd9
1 078.1
2008.40
2866.0
2 710.0[/span
3 250.11
我正在嘗試
gsub('([0-9])', '123. , a$icd9)
但我得到的是
[1] "0。 7.8.1." "0.0.8.4.0." "8.6.6.0." "7.1.0." "2.5.0.1.1.
謝謝,伙計們,預祝你們好運 :)
uj5u.com熱心網友回復:
library(dplyr)
a %>%
mutate(num = as. numeric(paste0(substr(icd9。 1,3),". ",substr(icd9,4。 nchar(icd9)/span>))))
id icd9 num
1 1 0781 78.10
2 2 00840 8.40
3 2 8660 866.00
4 2 7100 710.00
5 3 25011 250.11
uj5u.com熱心網友回復:
如果您的目標是將ICD9代碼映射到phecodes,請在您的問題中包括該資訊。這種方法可能對你有用:
library(tidyverse)
#remotes::install_github("PheWAS/PheWAS")
library(PheWAS)
#> Loading required package: parallel
#install.packages("fuzzyjoin")
library(fuzzyjoin)
a <- data. frame(id=c(1, 2。 2,2。 3)。 icd9=c("0781"/span>。 "00840"。 "8660", "7100", "25011"))
ci_str_detect < - function(x, y) {>
str_detect(y, pattern = sub(' (? <=.{3})', ' 。 ', x。 perl = TRUE))
}
fuzzyjoin:: fuzzy_left_join(a,phecode_map。 由= c("icd9" = "code")。 match_fun = ci_str_detect)。
#> id icd9 vocabulary_id code phecode
#> 1 1 0781 ICD9CM 078.1 078。
#> 2 1 0781 ICD9CM 078.10 078。
#> 3 1 0781 ICD9CM 078.11 078[/span]。
#> 4 1 0781 ICD9CM 078.12 078[/span]。
#> 5 1 0781 ICD9CM 078.19 078
#> 6 2 00840 <NA> <NA> <NA>。
#> 7 2 8660 ICD9CM E866.0 984
#> 8 2 7100 ICD9CM 710.0 695.42
#> 9 3 25011 ICD9CM 250.11 250.11[/span
創建于2021-09-21,由reprex軟體包(v2.0.1)
編輯
"008.40 "似乎不是一個有效的ICD9代碼。但 "008.41 "是有效的,所以如果你用它來代替,你就不會在第6行得到 "NA "值。轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/322176.html
標籤:
上一篇:如何解決在SQL中更新表的錯誤?
