You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将带命名的R向量转换为含两列的dataframe?

将命名向量转换为两列DataFrame

你创建了一个用于tidycensus数据拉取的命名向量:

dv_acs = c(
  hus          = "B25002_001", 
  husocc       = "B25002_002", 
  husvac       = "B17001_002"
)

使用out <- data.frame(dv_acs)转换后得到的DataFrame只有一列,原向量的命名仅作为行名,希望得到包含名称列和代码列的两列DataFrame。


方法1:使用tibble::enframe()(推荐,语法简洁)

tibble包的enframe()函数专门用于将向量转换为两列结构,默认列名为name和value,也可自定义:

library(tibble)
# 默认列名
out <- enframe(dv_acs)

# 自定义列名
out <- enframe(dv_acs, name = "variable", value = "acs_code")

输出结果:

# A tibble: 3 × 2
  variable acs_code  
  <chr>    <chr>     
1 hus      B25002_001
2 husocc   B25002_002
3 husvac   B17001_002

方法2:Base R原生实现

无需额外安装包,直接提取向量的名称和值构造DataFrame:

out <- data.frame(
  variable = names(dv_acs),
  acs_code = unname(dv_acs),
  stringsAsFactors = FALSE
)

输出结果:

variable  acs_code
1      hus B25002_001
2   husocc B25002_002
3   husvac B17001_002

方法3:使用stack()函数(Base R)

stack()会将向量名称转为ind列、值转为values列,可后续重命名列:

out <- stack(dv_acs)
# 重命名列
names(out) <- c("acs_code", "variable")
# 调整列顺序(可选)
out <- out[, c("variable", "acs_code")]

输出结果与方法2一致。


内容的提问来源于stack exchange,提问作者tchoup

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 02:45:34