簡體   English   中英

如何將缺少數據的多列合並為一列?

[英]How to combine multiple columns with missing data into one?

我有一個(非常混亂的)數據集,它是幾個數據集合並的產物。 它目前看起來像這樣:

   Study_ID Status Death_status death
1       100      1           NA    NA
2       200      1           NA    NA
3       300      0           NA    NA
4       400     NA            0    NA
5       500     NA            1    NA
6       600     NA            0    NA
7       700     NA           NA     0
8       800     NA           NA     1
9       900     NA           NA     1
10     1000     NA           NA     0

我想創建一個新列,將每個患者的所有 3 個列組合在一起。

我想要的輸出看起來像這樣:

   Study_ID New_Death_Status Status Death_status death
1       100                1      1           NA    NA
2       200                1      1           NA    NA
3       300                0      0           NA    NA
4       400                0     NA            0    NA
5       500                1     NA            1    NA
6       600                0     NA            0    NA
7       700                0     NA           NA     0
8       800                1     NA           NA     1
9       900                1     NA           NA     1
10     1000                0     NA           NA     0

其中 New_Death_Status 為每位患者提供全套數據。

我該怎么做呢?

可重現的數據:

data<-data.frame(Study_ID=c("100","200","300","400","500","600","700","800","900","1000"),Status=c("1","1","0","NA","NA","NA","NA","NA","NA","NA"),Death_status=c("NA","NA","NA","0","1","0","NA","NA","NA","NA"),death=c("NA","NA","NA","NA","NA","NA","0","1","1","0"))
> data

假設我們知道know patient 將有不止一列(這意味着我們可以安全地忽略第一列之后的所有非NA數據),那么我們可以coalesce它。

但是...您的數據具有文字"NA"字符串而不是保留符號NA 我認為這可能是您在某處處理的錯誤,所以我會將它們“修復”為NA (仍然是字符串):

library(dplyr)
data %>%
  mutate(
    # this step just replaces the literal "NA" with the symbol NA
    across(c(Status, Death_status, death), ~ if_else(. == "NA", .[NA], .)),
    New_Death_Status = coalesce(Status, Death_status, death)
  )
#    Study_ID Status Death_status death New_Death_Status
# 1       100      1         <NA>  <NA>                1
# 2       200      1         <NA>  <NA>                1
# 3       300      0         <NA>  <NA>                0
# 4       400   <NA>            0  <NA>                0
# 5       500   <NA>            1  <NA>                1
# 6       600   <NA>            0  <NA>                0
# 7       700   <NA>         <NA>     0                0
# 8       800   <NA>         <NA>     1                1
# 9       900   <NA>         <NA>     1                1
# 10     1000   <NA>         <NA>     0                0

coalesce返回在其向量參數中找到的第一個非NA ,因此它將默默地丟棄任何后續存在的非NA值。 此外,如果所有類都不相同,它會抱怨; 它們在這里都是字符串,但是如果您的處理正在更改類

暫無
暫無

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

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