簡體   English   中英

將 R 中的兩列與 NA 連接在一起

[英]Concatenating two columns together in R with NAs

我想創建一個列(結果),它將是另外兩個列的串聯。

col1 col2     Outcome
A     NA       A
A     B        AB
NA    NA       NA
NA    B        B
A     B        AB

我試過了:

df$Outcome = c(df$col1, df$col2)

但它不起作用。 最簡單的方法是什么?

我們可以unite

library(dplyr)
library(tidyr)
df %>%
    unite(Outcome, col1, col2, sep="", na.rm = TRUE, remove = FALSE) %>%
    select(names(df), Outcome) %>%
    mutate(Outcome = na_if(Outcome, ""))

-輸出

#   col1 col2 Outcome
#1    A <NA>       A
#2    A    B      AB
#3 <NA> <NA>    <NA>
#4 <NA>    B       B
#5    A    B      AB

或在單行中的base R

apply(df, 1, function(x) paste(na.omit(x), collapse=""))

或者可以通過刪除NA以一種駭人聽聞的方式完成(但它可能會失敗)

na_if(gsub("NA", "", do.call(paste0, df)), "")

c用於連接。 如果我們對兩個vector s 執行c ,則第二個vector在第一個向量的末尾連接起來,它的length等於兩個向量的長度之和

數據

df <- structure(list(col1 = c("A", "A", NA, NA, "A"), col2 = c(NA, 
 "B", NA, "B", "B")), row.names = c(NA, -5L), class = "data.frame")

暫無
暫無

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

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