R语言中如何将拆分后的tibble正确转换为dataframe?
解决方法
问题核心是你仅运行了extract函数但未将拆分结果保存到变量中,导致原变量d仍为初始的1列数据。只需将拆分后的结果赋值给变量,再转换为dataframe即可。
正确代码示例
方式一:覆盖原变量d后转换
library(tibble) library(dplyr) # 初始数据 d <- tibble(input=c("John Hopkins Institute 8.4 8.6 9.2 Blue", "Stanford : New School 9.4 5.6 9.2 Green", "Mayor College 6.4 7.6 4.2 Red")) # 执行拆分并将结果赋值给d d <- d %>% extract(input, regex="(.+) ([.\\d]+) ([.\\d]+) ([.\\d]+) (.+)", into=c("College Names", "Food rating", "Critic Rating", "Student rating", "Color")) # 转换为dataframe var <- as.data.frame(d)
方式二:用新变量存储拆分结果后转换
如果不想覆盖原数据,可将拆分结果存入新变量:
library(tibble) library(dplyr) d <- tibble(input=c("John Hopkins Institute 8.4 8.6 9.2 Blue", "Stanford : New School 9.4 5.6 9.2 Green", "Mayor College 6.4 7.6 4.2 Red")) # 拆分结果存入新变量split_data split_data <- d %>% extract(input, regex="(.+) ([.\\d]+) ([.\\d]+) ([.\\d]+) (.+)", into=c("College Names", "Food rating", "Critic Rating", "Student rating", "Color")) # 转换为dataframe var <- as.data.frame(split_data)
验证结果
执行上述代码后,var即为目标格式的dataframe,结构如下:
| College Names | Food rating | Critic Rating | Student rating | Color |
|---|---|---|---|---|
| John Hopkins Institute | 8.4 | 8.6 | 9.2 | Blue |
| Stanford : New School | 9.4 | 5.6 | 9.2 | Green |
| Mayor College | 6.4 | 7.6 | 4.2 | Red |
内容的提问来源于stack exchange,提问作者hereforadoubt
相关产品推荐
相关产品推荐

