如何获取带标签数据框的列标签并按标签选择列?
获取带标签数据框的列标签并通过标签选列
首先,你用到的apply_labels函数属于expss包,需要先加载这个包。另外你的示例代码有两处语法错误:一是列名写错(mtcars里没有disc,应为disp),二是最后几个参数末尾缺少逗号,修正后的代码如下:
library(expss) data(mtcars) mtcars <- apply_labels(mtcars, mpg = "Miles/(US) gallon", cyl = "Number of cylinders", disp = "Displacement (cu. in.)", hp = "Gross horsepower", drat = "Rear axle ratio", wt = "weight (1000 lbs)", qsec = "1/4 mile time", vs = "Engine", am = "Transmission", gear = "Number of forward gears", carb = "Number of carburetors" )
获取列标签的方法
- 获取单个列的标签:使用
var_lab()函数传入目标列即可:var_lab(mtcars$mpg) # 返回 "Miles/(US) gallon" - 获取整个数据框的所有列标签:用
sapply()遍历数据框每一列,调用var_lab():all_col_labels <- sapply(mtcars, var_lab) # 输出为命名向量,名字是列名,值是对应标签
通过列标签选择列的方法
先匹配标签对应的列名,再筛选列:
# 定义要选择的目标标签 target_labels <- c("Miles/(US) gallon", "Number of cylinders") # 匹配对应的列名 selected_col_names <- names(all_col_labels)[all_col_labels %in% target_labels] # 提取目标列 mtcars_selected <- mtcars[, selected_col_names]
如果结合dplyr包,还可以更简洁地筛选:
library(dplyr) mtcars_selected <- mtcars %>% select(where(~var_lab(.) %in% target_labels))
内容的提问来源于stack exchange,提问作者Jakob Sträter
相关产品推荐
相关产品推荐

