【问题标题】:Merge data based on response pattern in R根据 R 中的响应模式合并数据
【发布时间】:2015-04-17 00:43:37
【问题描述】:

我有一个包含调查回复项目(1-4 级)的数据框。这是前 10 名受访者的数据:

        Q20_1n Q20_3n Q20_5n Q20_7n Q20_9n Q20_11n Q20_13n  Q20_15n  Q20_17n
   1       1      2      1      1      1       1       1       1       1
   2       1      1      1      1      1       1       1       1       1
   3       2      1      1      1      1       1       1       2       2
   4       4      4      2      2      3       3       4       4       3
   5       1      1      1      1      1       1       1       2       1
   6       4      4      4      3      4       4       2       4       4
   7       3      3      4      3      3       3       4       4       3
   8       3      3      2      2      4       2       3       3       2
   9       1      1      1      1      1       1       1       1       1
   10      1      1      1      1      1       1       1       1       1

我为数据拟合了一个分级响应模型,现在每个响应模式都有θ帽子。原始数据中有 901 个观测值,但对 theta.hat 的观测值只有 547 个。原因是因为每个观察到的响应模式都有一个 theta.hat - 例如,所有项目的得分为“1”出现 94 次。 theta.hat 数据框如下所示:

      Q20_1n Q20_3n Q20_5n Q20_7n Q20_9n Q20_11n Q20_13n Q20_15n Q20_17n Obs   Theta        
   1       1      1      1      1      1       1       1       1       1  94 -1.307 
   2       1      1      1      1      1       1       1       1       2  10 -.816 
   3       1      1      1      1      1       1       1       1       4   1 -0.750    
   4       1      1      1      1      1       1       1       2       1  22 -.803   
   5       1      1      1      1      1       1       1       2       2   6 -.524

我想要做的是将 theta.hats 与原始数据合并。这似乎需要匹配两个数据集的响应模式。因此,例如,原始数据中的第 10 行(全为“1”)将收到 -1.307 的 theta hat,因为它与 theta 矩阵的第 1 行中的响应模式匹配。两个数据集都是结构化的,因此每个变量都是一个数字列。

我不确定如何为这种情况发送可重现的数据集,但如果您有建议,我很高兴。

谢谢你, 安德里亚

【问题讨论】:

  • 使用data.tablelibrary(data.table); setkeyv(setDT(df2), names(df1))[df1]

标签: r design-patterns merge response


【解决方案1】:

简单的merge 怎么样?假设您的第一个数据集(响应)分配给 df.1,第二个数据集(使用 theta 建模)分配给 df.2

merge(df.1, df.2, by = names(df.1), all.x = TRUE)

#    Q20_1n Q20_3n Q20_5n Q20_7n Q20_9n Q20_11n Q20_13n Q20_15n Q20_17n Obs  Theta
# 1       1      1      1      1      1       1       1       1       1  94 -1.307
# 2       1      1      1      1      1       1       1       1       1  94 -1.307
# 3       1      1      1      1      1       1       1       1       1  94 -1.307
# 4       1      1      1      1      1       1       1       2       1  22 -0.803
# 5       1      2      1      1      1       1       1       1       1  NA     NA
# 6       2      1      1      1      1       1       1       2       2  NA     NA
# 7       3      3      2      2      4       2       3       3       2  NA     NA
# 8       3      3      4      3      3       3       4       4       3  NA     NA
# 9       4      4      2      2      3       3       4       4       3  NA     NA
# 10      4      4      4      3      4       4       2       4       4  NA     NA

【讨论】:

  • 如此简单。我怎么没想到。显然,我正试图将火箭飞船带到商店而不是步行。
  • @user1638567 它不时发生在我们所有人身上。很高兴我能帮上忙。
猜你喜欢
  • 2017-02-24
  • 1970-01-01
  • 2021-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-15
  • 2018-04-08
  • 2015-07-19
相关资源
最近更新 更多