我试图将数据从url导入到以JSON形式出现的R中,然后将其导出到Excel文件中。
url:https://api.typeform.com/v1/form/JlCM2J?key=ecab3f590a2af4ca55468adc95686a043bbf6c9a
这是我的R码
library(data.table)
library(httr)
library(rjson)
set_config(config(ssl_verifypeer = 0L))
var1=fread('https://api.typeform.com/v1/form/JlCM2J?key=ecab3f590a2af4ca55468adc95686a043bbf6c9a')
head(var1)输出:
空data.table (0行):{"http_status":200,stats:{“http_status”:2,“总计”:2,“已完成”:1},“问题”:[{id“:”textfield_38991412,问题“:”您的名字是什么?,field_id":38991412},{"id":"statement_38991416,问题“:”Hi{answer_38991412}}],谢谢您接受这个questionnaire.Your答案,这将帮助我们为您建立一个伟大的品牌。一个强大和难忘的客户心目中。定义你是什么,你代表什么,什么使你与众不同。让我们开始吧!,field_id:38991416},{“id”:“group_38991407.
需要:I只需要将数据的responses部分导出为文件。
可以通过粘贴jsonviewer.stack.hu站点中的上述url来查看整个数据。
发布于 2017-01-03 10:52:57
以下是现代R中与REST接口的更多(IMO)惯用方式:
library(httr)
library(jsonlite)
library(dplyr)
res <- GET("https://api.typeform.com/v1/form/JlCM2J",
query=list(key="ecab3f590a2af4ca55468adc95686a043bbf6c9a"))
content(res, as="text") %>%
fromJSON(flatten=FALSE) -> out
glimpse(out$responses$answers)
## Observations: 2
## Variables: 26
## $ textfield_38991412 <chr> NA, "A"
## $ dropdown_38991418 <chr> NA, "Accounting"
## $ textarea_38991420 <chr> NA, "A"
## $ textfield_38991413 <chr> NA, "A"
## $ textarea_38991421 <chr> NA, "A"
## $ listimage_38991426_choice <chr> NA, "Company"
## $ textfield_38991414 <chr> NA, "A"
## $ website_38991435 <chr> NA, "http://A.com"
## $ textarea_38991422 <chr> NA, "A"
## $ listimage_38991427_choice <chr> NA, "Sincere"
## $ listimage_38991428_choice <chr> NA, "Male"
## $ list_38991436_choice <chr> NA, "17 or younger"
## $ list_38991437_choice <chr> NA, "Upper class"
## $ listimage_38991429_choice_49501105 <chr> NA, "Store"
## $ listimage_38991430_choice <chr> NA, "Product"
## $ textarea_38991423 <chr> NA, "A"
## $ listimage_38991431_choice <chr> NA, "Techy"
## $ listimage_38991432_choice_49501124 <chr> NA, "Fuchsia Rose"
## $ listimage_38991433_choice <chr> NA, "Classic"
## $ list_38991438_choice <chr> NA, "$3,000 or less"
## $ listimage_38991434_choice_49501140 <chr> NA, "Brand Design"
## $ textarea_38991424 <chr> NA, "A"
## $ textfield_38991415 <chr> NA, "A"
## $ dropdown_38991419 <chr> NA, "Afghanistan"
## $ email_38991439 <chr> NA, "A@a.com"
## $ textarea_38991425 <chr> NA, "A"httr::GET()可以更容易地管理额外的参数。httr::content()获取响应并检索原始文本,可以进行更细粒度的处理(如果需要的话)jsonlite::fromJSON()可以对单个JSON处理选项提供更细粒度的控制。然而,有一个R包rtypeform,它真正简化了一切(有趣的事实:它遵循上面的成语在封面下面):
library(rtypeform)
library(dplyr)
res <- get_results("JlCM2J")
glimpse(res$responses$answers)
## Observations: 2
## Variables: 26
## $ textfield_38991412 <chr> NA, "A"
## $ dropdown_38991418 <chr> NA, "Accounting"
## $ textarea_38991420 <chr> NA, "A"
## $ textfield_38991413 <chr> NA, "A"
## $ textarea_38991421 <chr> NA, "A"
## $ listimage_38991426_choice <chr> NA, "Company"
## $ textfield_38991414 <chr> NA, "A"
## $ website_38991435 <chr> NA, "http://A.com"
## $ textarea_38991422 <chr> NA, "A"
## $ listimage_38991427_choice <chr> NA, "Sincere"
## $ listimage_38991428_choice <chr> NA, "Male"
## $ list_38991436_choice <chr> NA, "17 or younger"
## $ list_38991437_choice <chr> NA, "Upper class"
## $ listimage_38991429_choice_49501105 <chr> NA, "Store"
## $ listimage_38991430_choice <chr> NA, "Product"
## $ textarea_38991423 <chr> NA, "A"
## $ listimage_38991431_choice <chr> NA, "Techy"
## $ listimage_38991432_choice_49501124 <chr> NA, "Fuchsia Rose"
## $ listimage_38991433_choice <chr> NA, "Classic"
## $ list_38991438_choice <chr> NA, "$3,000 or less"
## $ listimage_38991434_choice_49501140 <chr> NA, "Brand Design"
## $ textarea_38991424 <chr> NA, "A"
## $ textfield_38991415 <chr> NA, "A"
## $ dropdown_38991419 <chr> NA, "Afghanistan"
## $ email_38991439 <chr> NA, "A@a.com"
## $ textarea_38991425 <chr> NA, "A"无论哪种方式,如果您不习惯使用$访问列表中的字段,这必须是您第一次使用R(或者几乎是您的第一次)。在尝试使用API数据之前,您确实应该花一些时间学习R。不正确的结果和自我挫折感是你通过编码得到的唯一回报--剪切、粘贴和祈祷。您仍然需要将其放入CSV文件(write.csv()表示该文件)。
总之,如果您最终要使用Excel,为什么要以编程方式检索表单响应?如果您不打算在其余的工作中使用R,这似乎是一个不必要的步骤,除非您试图脚本下载的数据,并让某人登录到网站获取它。
最后,使您的API密钥无效并立即重新生成,因为您在一个开放的论坛上发布了它。我现在知道你有两个表单:“品牌问卷”和“测试表格”,并且能够监控你在Typeform中所做的事情,并随时检索您的表单数据。rtypeform包将允许您将API密钥存储在typeform_api环境变量中(您可以使用~/.Renviron来保存这些数据),因此您不必在脚本中再次向世界公开它。
https://stackoverflow.com/questions/41436723
复制相似问题