data <- rbind(c(1,2,3,4,5,6),
c(1,2,3,4,5,6),
c(1,2,3,4,5,6))
colnames(data) <- c("A", "B", "C", "D", "E", "F")
category_vector <- cbind(c("A", "B", "C", "D", "E"),
c("Cat1", "Cat2", "Cat3", "Cat2", "Cat5"))
colnames(category_vector) <- c("Name", "Category")
我的目标是将“data”中的列名称与“category_vector”中的名称相匹配,然后将“data”的每一列分配给第 1 行中相应的类别名称。
我想要的输出如下:
output <- rbind(c("Cat1", "Cat2", "Cat3", "Cat2", "Cat5", "NA"),
c(1,2,3,4,5,6),
c(1,2,3,4,5,6),
c(1,2,3,4,5,6))
colnames(output) <- colnames(data)
我知道,我可以使用 match(names(x), names(y)) 来显示相交,但不确定如何获得所需的输出。
这是一个例子:
library(dplyr)
data <- rbind(c(1,2,3,4,5,6),
c(1,2,3,4,5,6),
c(1,2,3,4,5,6))
colnames(data) <- c("A", "B", "C", "D", "E", "F")
category_vector <- cbind(c("A", "B", "C", "D", "E"),
c("Cat1", "Cat2", "Cat3", "Cat2", "Cat5"))
#colnames(category_vector) <- c("Name", "Category")
# turn everything in data into a character
data <- data |>
as.data.frame() |>
mutate(across(everything(), as.character))
category_vector <- as.data.frame(t(category_vector))
names(category_vector) <- category_vector[1, ]
category_vector <- category_vector[-1, ]
category_vector |>
bind_rows(data)
A B C D E F
1 Cat1 Cat2 Cat3 Cat2 Cat5 <NA>
2 1 2 3 4 5 6
3 1 2 3 4 5 6
4 1 2 3 4 5 6