首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用R(或Excel)组合数据--循环以匹配刺激

使用R(或Excel)组合数据--循环以匹配刺激
EN

Stack Overflow用户
提问于 2015-06-10 00:16:41
回答 1查看 55关注 0票数 2

我有两组数据,它们对应于我想要合并进行分析的不同实验任务。问题是我需要搜索和匹配特定刺激和特定参与者的某些行。我想使用脚本来省去一些麻烦。这可能很简单,但我以前从未这样做过。

更具体地说,我的问题是:在第一个数据集中,每行对应于一个两种选择的强迫选择任务,其中一次呈现两个刺激,参与者选择一个。在第二个数据集中,每一行对应于一个单独的项目任务,参与者被问到他们以前是否见过刺激。第二个任务中的刺激与第一个任务中成对的刺激相匹配(行数的两倍)。我希望能够匹配并向第一个数据集添加两列--一列表明左侧的项目稍后是否被识别,另一列用于右侧的刺激。

我认为这可以通过嵌套循环来完成,但我不确定是否有一种优雅的方法来实现这一点,或者可能是一个包。

EN

回答 1

Stack Overflow用户

发布于 2015-06-10 01:08:17

据我所知,您的第一个数据集如下所示:

代码语言:javascript
复制
(dat1 <- data.frame(person=1:2, stim1=1:2, stim2=3:4))
#   person stim1 stim2
# 1      1     1     3
# 2      2     2     4

这意味着人1得到了刺激1和3,人2得到了刺激2和4。然后你的第二个数据集看起来像这样:

代码语言:javascript
复制
(dat2 <- data.frame(person=c(1, 1, 2, 2), stim=c(1, 3, 4, 2), responded=c(0, 1, 0, 1)))
#   person stim responded
# 1      1    1         0
# 2      1    3         1
# 3      2    4         0
# 4      2    2         1

这给出了每个人如何对他们得到的每个刺激做出反应的信息。

您可以通过将人员/刺激对与match函数进行匹配来合并这两者:

代码语言:javascript
复制
dat1$response1 <- dat2$responded[match(paste(dat1$person, dat1$stim1), paste(dat2$person, dat2$stim))]
dat1$response2 <- dat2$responded[match(paste(dat1$person, dat1$stim2), paste(dat2$person, dat2$stim))]
dat1
#   person stim1 stim2 response1 response2
# 1      1     1     3         0         1
# 2      2     2     4         1         0

另一种选择(从原始的dat1dat2开始)是使用merge函数合并两次。您对输出列的名称的控制较少,但需要键入的内容也较少:

代码语言:javascript
复制
merged <- merge(dat1, dat2, by.x=c("person", "stim1"), by.y=c("person", "stim"))
merged <- merge(merged, dat2, by.x=c("person", "stim2"), by.y=c("person", "stim"))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30737549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档