【发布时间】:2018-03-08 15:01:07
【问题描述】:
我是 R 的新手,并且在迭代值时遇到了一些麻烦。
对于上下文:随着时间的推移,我有 60 个人的数据,每个人在一个文件夹中都有他/她自己的数据集(我收到了 id #s 00:59 的数据)。对于每个人,我需要 2 个值 - 响应时间和给出的图片响应(数字 1 - 16)。我需要为每个人将这些数据从宽格式转换为长格式,然后最终将所有数据集附加在一起。
我的问题是我无法编写一个循环来为每个人(即每个数据集)执行此操作。这是我到目前为止的代码:
pam[x] <- fromJSON(file = "PAM_u[x].json")
pam[x]df <- as.data.frame(pam[x])
#Creating long dataframe for times
pam[x]_long_times <- gather(
select(pam[x]df, starts_with("resp")),
key = "time",
value = "resp_times"
)
#Creating long dataframe for pic_nums (affect response)
pam[x]_long_pics <- gather(
select(pam[x]df, starts_with("pic")),
key = "picture",
value = "pic_num"
)
#Combining the two long dataframes so that I have one df per person
pam[x]_long_fin <- bind_cols(pam[x]_long_times, pam[x]_long_pics) %>%
select(resp_times, pic_num) %>%
add_column(id = [x], .before = 1)
如果您将上述代码中的 [x] 替换为一个人的 id#(例如 00),该代码将运行并为我提供我想要的那个人的数据框。关于如何做到这一点的任何建议,以便我可以完成所有 60 人?
谢谢!
编辑
因此,使用library(jsonlite) 而不是library(rjson) 以我需要的格式设置文件,而无需进行所有操作。感谢大家的回复,但解决方案显然比我想象的要容易得多。
【问题讨论】:
-
您能否提供其中一个人的数据样本?使用
purrr似乎应该很容易,但我不知道数据到底是什么样的。