[英]Renaming entries of a list within a list, by using a vector containing the column names
[英]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.call
或invoke
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.