向数据框添加一行虚拟文本
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
由于与检查 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