如何将带命名的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
相关产品推荐
相关产品推荐

