如何在R中将一个字符串列与多个字符串列连接起来

3

我试图将下面数据框(df1)按行连接起来,并得到下面的结果(df2)。

# Input
df1 <- data.frame (first_column  = c("A", "B", "C", "D"),
                  second_column = c("var1", "var2", "var3", "var4"),
                  third_column  = c("var5", "var6", "var7", " "),
                  fourth_column = c("var8", "var9", " ", " "))
# Ouput
df2 <- data.frame (first_column = c("A var1", "B var2", "B var3", "B var4"),
                  second_column  = c("A var5", "B var6", "B var7", "B "),
                  thrid_column = c("A var8", "B var9", "B ", "B "))

到目前为止,我用以下代码得到了最好的结果,但这不是我想要的:

# Get the number of columns as df1 will differ in size from time to time,
and the only thing I'd like to change to the script is the file path for df1.

nc <- ncol(df1)
 
df2 <- data.frame(paste(df1$first_column, df1[,c(2:nc)]))

非常感激您提供的想法和反馈。

1个回答

2
我们可以从“second_column”循环遍历到最后一列,将第一列与列值粘贴(使用str_c),并重命名列。
library(dplyr)
library(stringr)
df1 %>% 
  transmute(across(second_column:last_col(), 
   ~ str_c(first_column, .x, sep = ' '))) %>%
  rename_with(~ names(df1)[-length(.x)])

-或使用基本R
df2 <- df1
df2[-ncol(df1)] <- lapply(df1[-1], \(x) paste(df1$first_column, x))
df2 <- df2[-ncol(df2)]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接