r - 如何从简单的 tibble 中创建详细和分类的 tibble
问题描述
我的问题是如何创建应该如下所示的 tibble 或数据框:
因此,JEL 代码应按字母、字母和第一个数字分组,然后按字母和两个数字分组。到目前为止,我无法从 JEL_codes 中提取字母,因为它是一个列表,当我提取它时,这个列表比卷列表长,我无法再创建一个小标题。
目前,我的 tibble 看起来像这样,在那里我观察到了 JEL_codes 和音量:
也许作为第一步,我会分离观察结果,以便一个 JEL 代码与一个 volume 匹配,因此没有两个 JEL 代码在一行中。任何能给我带来进一步帮助的东西都对我有帮助,非常感谢!
解决方案
也许这就是你正在寻找的:
顺便说一句:为了帮助我们帮助您,您能否通过共享您的数据样本、您尝试的代码和您使用的软件包来重现您的问题?了解如何制作一个最小的可重现示例将您的数据类型发布dput(NAME_OF_DATASET)
到控制台中,然后将输出以开头的内容复制并粘贴structure(....
到您的帖子中。
library(tidyr)
library(tibble)
library(dplyr)
d <- tibble(
JEL_codes = list(c("Q54", "Q58"), c("Q15", "Q25"), "H23"),
volume = c(2, 3, 6)
)
d %>%
unnest(JEL_codes) %>%
mutate(JEL_code1 = gsub("^([A-Z]).+", "\\1", JEL_codes),
JEL_code2 = gsub("^([A-Z]\\d).+", "\\1", JEL_codes)) %>%
select(JEL_code1, JEL_code2, JEL_code3 = JEL_codes, volume) %>%
pivot_longer(-volume, names_to = "foo", values_to = "jel_code") %>%
select(-foo) %>%
count(jel_code, volume, sort = TRUE) %>%
pivot_wider(names_from = volume, values_from = n, values_fill = 0) %>%
arrange(jel_code)
#> # A tibble: 11 x 4
#> jel_code `2` `3` `6`
#> <chr> <int> <int> <int>
#> 1 H 0 0 1
#> 2 H2 0 0 1
#> 3 H23 0 0 1
#> 4 Q 2 2 0
#> 5 Q1 0 1 0
#> 6 Q15 0 1 0
#> 7 Q2 0 1 0
#> 8 Q25 0 1 0
#> 9 Q5 2 0 0
#> 10 Q54 1 0 0
#> 11 Q58 1 0 0
推荐阅读
- gitlab-ci - 跨管道中的作业保留 Gitlab CI 服务数据(或:如何在一个作业中播种数据并在另一个作业中访问它)
- python - 在 Python 中对 x,y 网格执行计算
- visual-studio-code - 是否可以在 VSC 数据查看器中更改“NaN”的颜色?
- vue.js - 将litepie-datepicker导入VueJS项目时“未捕获的TypeError:Object(...)不是函数”
- kotlin - kotlin 数据表结构,用于保存和排序数据
- php - 是否可以使用 glob 模式来匹配 zip 内容?
- microsoft-graph-api - MS Graph 事件 - 在日历之间移动事件时保留自定义属性
- php - 如何使用 OAuth 协议连接到 Google My Business API?
- javascript - 从字符串数组中,使用组件以不同的样式呈现字符串数组的某些索引
- reactjs - 为什么 React 组件在状态不变的情况下只重新渲染一次?