簡體   English   中英

將 url 列合並為 R 中的一列

[英]Combine columns of urls into one column in R

我有三列 Facebook、Twitter 和 Instagram URL,如下所示:

df <- data.frame(fb_url = c("www.facebook.com/...", "www.facebook.com/...",NA,NA,NA,NA),
                 tw_url = c(NA, NA, "www.twitter.com/...", "www.twitter.com/...",NA,NA),
                 ig_url = c(NA, NA, NA, NA, "www.instagram.com/...", "www.instagram.com/..."))
> df
fb_url                    tw_url               ig_url
www.facebook.com/...      NA                   NA
www.facebook.com/...      NA                   NA
NA                        www.twitter.com/...  NA
NA                        www.twitter.com/...  NA
NA                        NA                   www.instagram.com/...
NA                        NA                   www.instagram.com/...

我只想將它們合並到一個看起來像這樣的列中:

url
www.facebook.com/...
www.facebook.com/...
www.twitter.com/...
www.twitter.com/...
www.instagram.com/...
www.instagram.com/...

paste0union給了我錯誤,我認為我把這個想法復雜化了。

列都是factor (在data.frame調用中默認為stringsAsFactors = TRUE ),因此可以將其轉換為character類然后使用coalesce

library(dplyr)
df %>% 
     mutate_all(as.character) %>%
     transmute(url = coalesce(!!! .))
#            url
#1  www.facebook.com/...
#2  www.facebook.com/...
#3   www.twitter.com/...
#4   www.twitter.com/...
#5 www.instagram.com/...
#6 www.instagram.com/...

您也可以使用基本 R 來做到這一點:

df <- data.frame(fb_url = c("www.facebook.com/...", "www.facebook.com/...",NA,NA,NA,NA),
                 tw_url = c(NA, NA, "www.twitter.com/...", "www.twitter.com/...",NA,NA),
                 ig_url = c(NA, NA, NA, NA, "www.instagram.com/...", "www.instagram.com/..."),
                 stringsAsFactors = FALSE)

data.frame(url = na.omit(unlist(df)),
           row.names = NULL)
#>                     url
#> 1  www.facebook.com/...
#> 2  www.facebook.com/...
#> 3   www.twitter.com/...
#> 4   www.twitter.com/...
#> 5 www.instagram.com/...
#> 6 www.instagram.com/...

您可以使用tidyr包中的unitetidyr

df[] <- lapply(df, as.character) ## convert data frame to character class 
tidyr::unite(df, url, na.rm = T) ## then merge all the columns into url column with removing nas

#   url
#1  www.facebook.com/...
#2  www.facebook.com/...
#3   www.twitter.com/...
#4   www.twitter.com/...
#5 www.instagram.com/...
#6 www.instagram.com/...

暫無
暫無

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

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