簡體   English   中英

使用包含列名的向量粘貼多列

[英]paste multiple columns using a vector containing column names

我有一個這樣的數據框:

df <- data.frame(
  a = c("A", "B"),
  b = c("C", "D"),
  c = c("E, F", "G, H"))

> df
  a b    c
1 A C E, F
2 B D G, H

我想創建一個這樣的新列:

df2 <- data.frame(
  a = c("A", "B"),
  b = c("C", "D"),
  c = c("E, F", "G, H"),
  new = c("A, C: E, F", "B, D: G, H"))

  a b c    new       
1 A C E, F A, C: E, F
2 B D G, H B, D: G, H

我試過這個,但它將兩列連接為一個向量:

cols <- c("a", "b")
single <- "c"

df <- df %>% mutate(
  new = paste0(paste0(df[,cols], collapse = ", "), ": ", df[,single]))

  a b c    new                           
1 A C E, F c("A", "B"), c("C", "D"): E, F
2 B D G, H c("A", "B"), c("C", "D"): G, H

如何相應地改變新列? 請注意,我需要使用“cols”變量來包含兩列的名稱。

我們可以使用do.callinvoke

library(dplyr)
library(purrr)
df %>% 
   mutate(new = paste(invoke(paste, 
    c(across(all_of(cols)), sep = ", ")), .data[[single]], sep=": "))

-輸出

 a b    c        new
1 A C E, F A, C: E, F
2 B D G, H B, D: G, H
df$new <- paste0(apply(df[cols], 1, paste, collapse=', '), ': ', df[[single]])

暫無
暫無

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

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