传播或收集小标题[重复]

问题描述 投票:0回答:1

我从 API API ANBIMA 获得了一个小标题,它将数据放入两列中,一列包含我想要成为行的变量的名称,另一列包含值。我试图将第一列放入列表中,过滤唯一值,粘贴到扩展命令中,但我不能做第一件事,那就是创建一个列表。当我尝试时,我会得到一个包含一个观察结果的字符列表。

数据有 15 个变量,它们在第一列中重复,改变第二列的值

编辑:

就像建议的那样,这是 dput(head(x, 20)

的输出
dput(head(dados, 20))
structure(list(name = c("tipo_titulo", "expressao", "data_vencimento", 
"data_referencia", "codigo_selic", "data_base", "taxa_compra", 
"taxa_venda", "taxa_indicativa", "intervalo_min_d0", "intervalo_max_d0", 
"intervalo_min_d1", "intervalo_max_d1", "pu", "desvio_padrao", 
"tipo_titulo", "expressao", "data_vencimento", "data_referencia", 
"codigo_selic"), value = c("LTN", "Taxa (% a.a.)/252", "2023-01-01", 
"2022-12-06", "100000", "2016-01-20", "13.7107", "13.6952", "13.7027", 
"13.5377", "13.9248", "13.5338", "13.9233", "990.36449", "0.00259307377643", 
"NTN-F", "Taxa (% a.a.)/252", "2023-01-01", "2022-12-06", "950199"
)), row.names = c(NA, 20L), class = c("tbl_df", "tbl", "data.frame"
))

我下班在桌面上,所以无法访问主机上传数据,我会放一张显示小标题格式的图片

enter image description here

要访问的 API 信息位于此处:https://developers.anbima.com.br/en/visao-geral/autenticacao/#oauth2

为了获得小标题,我使用了代码:

library(httr)
library(jsonlite)
library(tidyverse)
library(stringr)
library(tibble)
library(bizdays)

client_id <- ''
client_secret <- ''

token_anbima <- base64_enc(str_c(client_id, ':', client_secret))

resposta_anbima <- POST("https://api.anbima.com.br/oauth/access-token",
                        add_headers("Authorization" = str_c("Basic ", token_anbima)), 
                        body = list(grant_type = "client_credentials"),
                        encode = 'form'
                        )

resposta_anbima$status

access_token <- str_sub(content(resposta_anbima, "text"), start = 18, end = 29)

data_tpf <- preceding(Sys.Date(), 'Brazil/ANBIMA')

teste <- GET(str_c('https://api-sandbox.anbima.com.br/feed/precos-indices/v1/titulos-publicos/mercado-secundario-TPF?data=',
                   data_tpf),
             add_headers("client_id" = client_id,
                         "access_token" = access_token))

dados <- enframe(unlist(content(teste)))
r tibble spread
1个回答
1
投票

pivot_wider
unnest
结合使用,但不完全确定这是否是您所需要的。

library(tidyr)

pivot_wider(dados, names_from=name, values_from=value, values_fn=list) %>% 
  unnest(everything())
# A tibble: 2 × 15
  tipo_titulo expressao  data_…¹ data_…² codig…³ data_…⁴ taxa_…⁵ taxa_…⁶ taxa_…⁷
  <chr>       <chr>      <chr>   <chr>   <chr>   <chr>   <chr>   <chr>   <chr>  
1 LTN         Taxa (% a… 2023-0… 2022-1… 100000  2016-0… 13.7107 13.6952 13.7027
2 NTN-F       Taxa (% a… 2023-0… 2022-1… 950199  2016-0… 13.7107 13.6952 13.7027
# … with 6 more variables: intervalo_min_d0 <chr>, intervalo_max_d0 <chr>,
#   intervalo_min_d1 <chr>, intervalo_max_d1 <chr>, pu <chr>,
#   desvio_padrao <chr>, and abbreviated variable names ¹​data_vencimento,
#   ²​data_referencia, ³​codigo_selic, ⁴​data_base, ⁵​taxa_compra, ⁶​taxa_venda,
#   ⁷​taxa_indicativa
© www.soinside.com 2019 - 2024. All rights reserved.