【发布时间】:2020-07-07 09:08:44
【问题描述】:
我正在处理来自重复测量设计的数据。数据由 4 次测量组成,每次测量大约 100 个变量。其中一个变量是包含反应任务结果的 JSON 数组。这个数组的结构基本上是这样的:[[prime, answer, response time], [prime, answer, response time], ...]
每个数组包含大约 80 个试验。我的目标是将此数组转换为单独的列,使其看起来像下面的示例:
prime1 answer1 reaction_time1 prime2 answer2 reaction_time2 ...
picture8 2 2398 2 1 1856
picture8 1 798 1 2 712
...
在处理示例数据集时,我设法使用以下代码将数组转换为数据框:
reaction_data <- data.frame(example_data$ID, example_data$TP,
jsonlite::stream_in(textConnection(gsub("\\n", "", example_data$reaction_raw))))
如上所述,我现在正在处理以长格式排列的重复测量数据。因此,对于每个人ID,我有四个测量值TP,理想情况下,包括 JSON 数组在内的所有 100 个变量的完整数据集。然而,在现实中,我当然正在处理辍学和缺失值。这意味着在某些情况下也缺少 JSON 数组。假设我的 JSON 数组仅包含 3 个试验,我当前的数据框看起来或多或少类似于下面的示例数据(忽略所有其他变量):
ID TP reaction_raw
1 1 [[picture8, 2, 2398], [picture2, 1, 1856], [picture1, 1, 897]]
1 2 [[picture8, 1, 798], [picture2, 2, 712], [picture1, 1, 423]]
1 3 NA
1 4 [[picture8, 1, 1278], [picture2, 1, 1712], [picture1, 1, 902]]
2 1 [[picture8, 2, 2015], [picture2, 1, 3820], [picture1, 2, 2719]]
2 2 [[picture8, 2, 3219], [picture2, 2, 1920], [picture1, 1, 1298]]
2 3 NA
2 4 NA
3 1 [[picture8, 1, 209], [picture2, 1, 382], [picture1, 2, 891]]
3 2 NA
3 3 [[picture8, 2, 781], [picture2, 1, 291], [picture1, 1, 2039]]
3 4 NA
...
现在运行我的代码时,我收到以下错误消息:
lexical error: invalid char in json text.
NA
(right here) ------^
我猜我的代码无法处理丢失的数组。有人知道如何处理这个问题吗? 提前谢谢!
【问题讨论】:
-
嗨,夏洛特。您的字符串不是有效的 json。您的字符串中是否引用了术语
picture8、picture2和picture1?