自动在 table 个条目前添加文本

Automatically adding text in front of table entries

我使用 R 创建了一些伪数据,如下所示:

file <-data.frame(
    
    "id" = c("1", "2", "3","4", "5","6", "7", "8", "9", "10"),
 "var_1" = c("A", "B", "B","A", "B","B", "B", "A", "A", "B"),
 "var_2" = c("AA", "BB", "BB","AA", "BB","BB", "BB", "AA", "AA", "BB")
)

有没有办法在每个单元格条目前添加一些文本,就像我在下面所做的那样(手动)?

f <-data.frame(
    
    "id" = c("1", "2", "3","4", "5","6", "7", "8", "9", "10"),
 "var_1" = c("var_1_A", "var_1_B", "var_1_B","var_1_A", "var_1_B","var_1_B", "var_1_B", "var_1_A", "var_1_A", "var_1_B"),
 "var_2" = c("var_2_AA", "var_2_BB", "var_2_BB","var_2_AA", "var_2_BB","var_2_BB", "var_2_BB", "var_2_AA", "var_2_AA", "var_2_BB")
)

有没有办法自动执行此操作?

谢谢

您可以使用:

library(dplyr)

file %>% mutate(across(starts_with('var'), ~paste(cur_column(), ., sep = '_')))

#   id   var_1    var_2
#1   1 var_1_A var_2_AA
#2   2 var_1_B var_2_BB
#3   3 var_1_B var_2_BB
#4   4 var_1_A var_2_AA
#5   5 var_1_B var_2_BB
#6   6 var_1_B var_2_BB
#7   7 var_1_B var_2_BB
#8   8 var_1_A var_2_AA
#9   9 var_1_A var_2_AA
#10 10 var_1_B var_2_BB

或以 R 为基数:

file[-1] <- Map(function(x, y) paste(x, y, sep = '_'), file[-1], names(file)[-1])

我们可以使用str_c

library(dplyr)
library(stringr)
file %>%
    mutate(across(starts_with('var'), ~ str_c(cur_column(), ., sep = '_')))