向数据框添加一行虚拟文本

add a row of dummy text to data frame

由于与检查 ArcGis 中的错误有关的原因,我的数据要去哪里,我需要在顶部添加一行包含虚拟变量,我希望它是 Column1:Column( n)

例如,我有这个:

  ID A  B    C
1  A 1  8 set1
2  A 2  9 set2
3  B 3 10 set1
4  B 4 11 set2
5  B 5 12 set3
6  C 6 13 set1
7  C 7 14 set2

我想要这个:

       ID       A       B       C
1 Column1 Column2 Column3 Column4
2       A       1       8    set1
3       A       2       9    set2
4       B       3      10    set1
5       B       4      11    set2
6       B       5      12    set3
7       C       6      13    set1
8       C       7      14    set2

我知道这会使一些数字列变成字符。下面是来自 dput 的一些虚拟数据。请注意,我的真实数据集有更多的实际列。

dput(df)
structure(list(ID = c("A", "A", "B", "B", "B", "C", "C"), A = c(1, 
2, 3, 4, 5, 6, 7), B = c(8, 9, 10, 11, 12, 13, 14), C = c("set1", 
"set2", "set1", "set2", "set3", "set1", "set2")), class = "data.frame", row.names = c(NA, 
-7L))

使用 tidyverse,将列转换为 character

后使用 add_row
library(dplyr)
library(tibble)
library(stringr)
df %>% 
 mutate(across(everything(), as.character)) %>% 
 add_row(!!! setNames(str_c("Column", seq_along(.)), names(df)), .before = 1)

-输出

    ID       A       B       C
1 Column1 Column2 Column3 Column4
2       A       1       8    set1
3       A       2       9    set2
4       B       3      10    set1
5       B       4      11    set2
6       B       5      12    set3
7       C       6      13    set1
8       C       7      14    set2

这是一个基本的 R 选项

> rbind(as.list(paste0("Column", seq_along(df))), df)
       ID       A       B       C
1 Column1 Column2 Column3 Column4
2       A       1       8    set1
3       A       2       9    set2
4       B       3      10    set1
5       B       4      11    set2
6       B       5      12    set3
7       C       6      13    set1
8       C       7      14    set2

这是另一个基本的 R 解决方案:

df[nrow(df)+1,1:4] <- paste0(rep("Column", 4), 1:4)
df <- df[c(8,1:7),]
rownames(df) <- NULL
       ID       A       B       C
1 Column1 Column2 Column3 Column4
2       A       1       8    set1
3       A       2       9    set2
4       B       3      10    set1
5       B       4      11    set2
6       B       5      12    set3
7       C       6      13    set1
8       C       7      14    set2

作为替代方案,我们可以使用 DataCombine 包中的 InsertRow 函数:

#install.packages("DataCombine")
library(DataCombine)

InsertRow(df, NewRow = paste0(rep("Column", 4), 1:4), RowNum = 1)
       ID       A       B       C
1 Column1 Column2 Column3 Column4
2       A       1       8    set1
3       A       2       9    set2
4       B       3      10    set1
5       B       4      11    set2
6       B       5      12    set3
7       C       6      13    set1
8       C       7      14    set2