簡體   English   中英

為 r 中的列分配新值

[英]Assign new values for the column in r

我有一列值:“腺癌”、“大細胞癌”、“其他肺癌”、“小細胞癌”、“鱗狀細胞癌”,例如:

> head(covars$newtype[1:5])

[1] Large-cell carcinoma Other lung cancer   
[3] <NA>                 Adenocarcinoma      
[5] Adenocarcinoma 

我想分別將值更改為“Ade”、“Large”、“Other”、“Small”、“Squ”。我嘗試了幾種方法,目前計划通過編寫多個 ifelse 來修復它。但是有沒有更有效的方法修復它?提前致謝!

我們可以嘗試使用case_whendplyr包:

covar$abbrev <- case_when(
    covars$newtype == "Large-cell carcinoma" ~ "Large",
    covars$newtype == "Other lung cancer" ~ "Other",
    covars$newtype == "Adenocarcinoma" ~ "Ade",
    TRUE ~ NA
)

您可以在上述內容中添加附加條款以涵蓋未顯示的其他數據。

解決此類問題的另一種方法是使用命名向量作為查找表:

labels <- c("Adenocarcinoma" = "Ade", 
            "Large-cell carcinoma" = "Large",
            "Other lung cancer" = "Other",
            "Small-cell carcinoma" = "Small",
            "Squamous-cell carcinoma" = "Squ")

set.seed(42)

covars <- data.frame(newtype = c(sample(names(labels), 20, rep = TRUE), NA))

# Option 1
covars$newtype1 <- labels[covars$newtype]
# Option 2: Using dplyr::recode which allows for labelling missing values
covars$newtype2 <- dplyr::recode(covars$newtype, !!!labels, .missing = "Other")

covars
#>                    newtype newtype1 newtype2
#> 1           Adenocarcinoma      Ade      Ade
#> 2  Squamous-cell carcinoma      Squ      Squ
#> 3           Adenocarcinoma      Ade      Ade
#> 4           Adenocarcinoma      Ade      Ade
#> 5     Large-cell carcinoma    Large    Large
#> 6     Small-cell carcinoma    Small    Small
#> 7     Large-cell carcinoma    Large    Large
#> 8     Large-cell carcinoma    Large    Large
#> 9           Adenocarcinoma      Ade      Ade
#> 10    Small-cell carcinoma    Small    Small
#> 11          Adenocarcinoma      Ade      Ade
#> 12 Squamous-cell carcinoma      Squ      Squ
#> 13    Small-cell carcinoma    Small    Small
#> 14    Large-cell carcinoma    Large    Large
#> 15    Large-cell carcinoma    Large    Large
#> 16       Other lung cancer    Other    Other
#> 17          Adenocarcinoma      Ade      Ade
#> 18          Adenocarcinoma      Ade      Ade
#> 19       Other lung cancer    Other    Other
#> 20    Small-cell carcinoma    Small    Small
#> 21                    <NA>     <NA>    Other

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM