You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用R语言qualtRics包调用Qualtrics API仅获列无行数据问题

问题:qualtRics fetch_survey仅返回列结构无数据行

使用qualtRics包拉取调查数据时,进度条显示完成,但返回的tibble只有18列却0行数据,实际该调查有1200条响应记录。

可能的原因及解决方法

1. 默认过滤规则排除了所有响应

fetch_survey默认会过滤出已完成的响应(filter = "Finished == 'True'"),如果你的调查响应大多是未完成、被标记为垃圾或部分完成的,就会出现0行结果。

解决:取消过滤规则,拉取所有响应:

ema_survey <- fetch_survey(surveyID = surveys$id[6], filter = NULL)

或者指定包含未完成响应的过滤条件:

# 拉取所有状态的响应
ema_survey <- fetch_survey(surveyID = surveys$id[6], filter = "Status != ''")

2. 调查ID匹配错误

确认surveys$id[6]对应的是你目标调查的ID,all_surveys()返回的列表顺序可能和Qualtrics网页端的显示顺序不一致。

解决:查看所有调查的名称与ID对应关系:

View(surveys)

找到目标调查的名称,核对对应的ID后再传入fetch_survey。

3. 缓存导致的旧数据

如果之前拉取过该调查的空数据,qualtRics可能会使用缓存结果,而不是重新请求最新数据。

解决:强制跳过缓存,重新请求:

ema_survey <- fetch_survey(surveyID = surveys$id[6], force_request = TRUE)

4. API权限不足

虽然能通过all_surveys()获取调查列表,但你的API密钥对应的账号可能没有查看该调查响应数据的权限(比如调查是团队共享的,但未给你数据访问权限)。

解决:登录Qualtrics网页端,确认当前账号能查看目标调查的响应数据;或者联系管理员调整API账号的权限。

5. 数据读取/转换异常

少数情况下,响应数据中的特殊字符或格式问题会导致转换为tibble时丢失行数据。

解决:先拉取原始JSON数据,检查是否存在响应记录:

raw_data <- fetch_survey(surveyID = surveys$id[6], convert = FALSE)
# 查看原始数据中的响应数量
length(raw_data$result$responses)

如果原始数据里有响应,再尝试手动转换为数据框:

library(dplyr)
ema_survey <- bind_rows(raw_data$result$responses)

内容的提问来源于stack exchange,提问作者Pss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 10:35:01