如何在R Studio中从Naver Finance API生成股票数据DataFrame
你当前的代码已获取到原始数据,但返回内容包含大量空行、格式不符合标准JSON,导致无法直接解析成DataFrame。以下是完善后的代码,可直接实现目标:
rm(list = ls(all=T)) library(jsonlite) library(dplyr) library(lubridate) # 目标URL url <- "https://api.finance.naver.com/siseJson.naver?symbol=005930&requestType=1&startTime=20220312&endTime=20230517&timeframe=day" # 读取数据并清理空行、制表符 data <- readLines(url, warn = FALSE) data_clean <- gsub("\t", "", data) %>% Filter(f = function(x) x != "") # 修正JSON格式:单引号转双引号、移除末尾多余逗号 data_json <- data_clean %>% gsub(pattern = "'", replacement = '"', x = .) %>% gsub(pattern = ",$", replacement = "", x = .) %>% paste(collapse = "") %>% # 补充首尾括号,形成标准JSON数组 paste0("[", ., "]") # 解析JSON并转换为DataFrame,处理数据类型 df <- fromJSON(data_json) %>% as.data.frame() %>% # 设置列名 setNames(c("날짜", "시가", "고가", "저가", "종가", "거래량", "외국인소진율")) %>% # 转换日期格式 mutate(날짜 = ymd(날짜)) %>% # 转换数值类型(部分列默认是字符型) mutate(across(c(시가, 고가, 저가, 종가, 거래량, 외국인소진율), as.numeric)) # 查看结果 head(df)
关键步骤说明:
- 清理空行:用
Filter移除所有空字符串行,只保留有效数据行 - 修正JSON格式:Naver返回的是类JSON结构,需要把单引号替换为双引号,移除每行末尾的逗号,再拼接成标准JSON数组格式
- 数据类型转换:解析后默认部分列是字符型,手动转换为日期和数值类型,方便后续分析
内容的提问来源于stack exchange,提问作者R starter
相关产品推荐
相关产品推荐

