用行中的用户条目 reshape R 数据,为每个用户折叠

标签 r reshape

请原谅我对 R 世界的新手,提前感谢您的帮助。

我想分析实验中的数据。

数据以长格式出现,需要重新调整为宽格式,但我不知道该怎么做。熔化/类型转换和 reshape 的大多数示例都处理更简单的数据帧。

每次受试者回答一个关于实验的问题时,他的用户名、位置、年龄和性别都会记录在一行中,然后在这些变量旁边输入他关于一系列问题的实验数据。事情是这样的,他们可能会回答任何数量的实验问题,他们可能会回答不同的项目(这很复杂,但必须是这样)。

原始数据如下所示:

User_id, location, age, gender, Item, Resp
1, CA, 22, M, A, 1 
1, CA, 22, M, B, -1 
1, CA, 22, M, C, -1 
1, CA, 22, M, D, 1 
1, CA, 22, M, E,-1
2, MD, 27, F, A, -1 
2, MD, 27, F, B, 1 
2, MD, 27, F, C, 1 
2, MD, 27, F, E, 1 
2, MD, 27, F, G, -1 
2, MD, 27, F, H, -1 

我想 reshape 这些数据,让每个用户都在一行,看起来像这样:
User_id, location, age, gender, A, B, C, D, E, F, G, H
1, CA, 22, M, 1, -1, -1, 1, -1, 0, 0, 0, 
2, MD, 27, F, -1, 1, 1, 1, 0, 1, -1, -1

我认为这只是找到正确的 reshape 方程的问题,但我已经研究了几个小时,但我无法完全得到我想要的样子,因为大多数示例都没有重复的人口统计数据,因此可以更简单地轮换。如果我忽略了一些简单的事情,非常抱歉。

最佳答案

使用 data.table你可以做:

library(data.table)
> dcast(dt, User_id + location + age ~ Item, value.var = "Resp", fill = 0L)
   User_id location age  A  B  C  D  E  G  H
1:       1       CA  22  1 -1 -1  1 -1  0  0
2:       2       MD  27 -1  1  1  0  1 -1 -1

关于用行中的用户条目 reshape R 数据,为每个用户折叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32061021/

相关文章:

r - 最小化具有两个变量的函数

r - 从R中的3个不同向量中找出最长的长度

r - 另一个聚合

c++ - 在 Windows 上使用与 Rtools 和 Rcpp 包含的版本不同的 gcc 版本

r - 按行数拆分数据框

reshape - 用于框架滑动的 tensorflow 变换(numpy stride_tricks)

python - PyTorch reshape 张量维度

r - R 中的数据透视表不均匀(长度列)

python - Keras reshape 输入 LSTM

r - 如何将具有不同列名的数据框从宽转换为长,具有不同的列名