如何直接用向量标记数据框的名称
How to label colnames of a dataframe directly with a vector
我有一个包含 300 列的数据框。我想用向量(由 300 个条目组成)标记列。
我尝试使用带标签的包装。但是我不想将每个变量一个一个地分配给一个标签 -> id= "Identity"
, age = "Age"
.....等等。
我想将向量中的标签名称直接分配给列 -> c("Identity", "Age", ...
示例:
library(tidyverse)
library(labelled)
#dataframe
df <- data.frame(matrix(0, ncol = 300, nrow = 2))
#vector of labels for columns
label_colname <- sprintf("label_colname[%d]",seq(1:300))
df %>% set_variable_labels(label = label_colname)
error in set_variable_labels(., label = label_colname) : some variables not found in .data
我现在找到了带有 sjlabelled 包的解决方案:
library(sjlabelled)
df <- data.frame(matrix(0, ncol = 30, nrow = 2))
label_colname <- sprintf("label_colname[%d]",seq(1:30))
df <- set_label(df, label = label_colname) # set_label from sjlabelled package
由于标签只是作为属性存储,您也可以直接在基 R 中执行此操作:
for (i in seq_along(df)) {
attr(df[[i]], "label") <- label_colname[i]
}
数据(从 TarJae 挖来的)
df <- data.frame(matrix(0, ncol = 30, nrow = 2))
label_colname <- sprintf("label_colname[%d]",seq(1:30))
我有一个包含 300 列的数据框。我想用向量(由 300 个条目组成)标记列。
我尝试使用带标签的包装。但是我不想将每个变量一个一个地分配给一个标签 -> id= "Identity"
, age = "Age"
.....等等。
我想将向量中的标签名称直接分配给列 -> c("Identity", "Age", ...
示例:
library(tidyverse)
library(labelled)
#dataframe
df <- data.frame(matrix(0, ncol = 300, nrow = 2))
#vector of labels for columns
label_colname <- sprintf("label_colname[%d]",seq(1:300))
df %>% set_variable_labels(label = label_colname)
error in set_variable_labels(., label = label_colname) : some variables not found in .data
我现在找到了带有 sjlabelled 包的解决方案:
library(sjlabelled)
df <- data.frame(matrix(0, ncol = 30, nrow = 2))
label_colname <- sprintf("label_colname[%d]",seq(1:30))
df <- set_label(df, label = label_colname) # set_label from sjlabelled package
由于标签只是作为属性存储,您也可以直接在基 R 中执行此操作:
for (i in seq_along(df)) {
attr(df[[i]], "label") <- label_colname[i]
}
数据(从 TarJae 挖来的)
df <- data.frame(matrix(0, ncol = 30, nrow = 2))
label_colname <- sprintf("label_colname[%d]",seq(1:30))