如何解决如何从一个数据框中的字符中提取字符串并将其放入新表中 数据
我正在研究一个新的闪亮项目,并试图重用他在SQL中所做的一些同事工作,以加快为该应用程序构建数据所需的时间。
我不完全知道如何描述这个问题,因此我将通过展示我所拥有的并解释我想要得到的东西来做到这一点。
本质上,我们有一个SQL脚本,可将一堆数据分成两列。
- 是一个标识符列,过去我们使用vlookup拆分字符串部分并在excel中填写单元格。
- 该标识符的值是计数,平均值还是百分比。
如下所示。
lookup output
1: dataAU20161 142
2: dataAU20171 246
3: dataAU20181 17
4: dataAU20191 3
5: dataAU20162 193
6: dataAU20172 203
7: dataAU20182 11
8: dataAU20192 9
因此,理想情况下,我想将此数据转换为以下格式,其中'data'
字符串标识它们将进入同一数据帧。字符串中的年份将被实施为列,年份(1或2)之后的数字将作为列被实施为因子变量。
x 2016 2017 2018 2019
--------------------------------
1 142 246 17 3
2 193 203 11 9
对此将提供任何帮助!
解决方法
一种选择是将“查找”列分为两个
library(dplyr)
library(tidyr)
df1 %>%
extract(lookup,into = c('lookup','rn'),'dataAU(\\d{4})(\\d{1})') %>%
pivot_wider(names_from= lookup,values_from =output) %>%
dplyr::select(-rn)
# A tibble: 2 x 4
# `2016` `2017` `2018` `2019`
# <int> <int> <int> <int>
#1 142 246 17 3
#2 193 203 11 9
数据
df1 <- structure(list(lookup = c("dataAU20161","dataAU20171","dataAU20181","dataAU20191","dataAU20162","dataAU20172","dataAU20182","dataAU20192"
),output = c(142L,246L,17L,3L,193L,203L,11L,9L)),class = "data.frame",row.names = c("1:","2:","3:","4:","5:","6:","7:","8:"))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。