我有一个实验,参与者必须为15个不同的单词提示输入10个关联。现在,我感兴趣的是获取每个关联在每个不同提示下出现的次数的频率计数,但也分为年龄组。
例如,如果我有一个名为Media
的提示,我希望有一个三列freqMedia15-30
、freqMedia31-45
等。
每个提示都需要这些列。但我不知道是否有更聪明的方法可以做到这一点。
我的年龄组是15-30
、31-45
、46-60
。
我设法通过以下方式获得每个提示的频率:
Media <- subset(testdata, prompt == "Media")
w = table(Media$typedWord)
t = as.data.frame(w)
names(t)[1] = 'typedWord'
Media <- merge(Media, t, by = "typedWord")`
但这并没有考虑到年龄组。 有什么想法吗?
考虑到我或多或少了解您的数据结构,并且您有一个最终的列,其中包含"命中"或"计数",您可以执行
aggregate(counts ~ typeWord + ageGroup, data = Media, FUN = sum)
如果您添加"虚拟"列,这也有效Media$counts = rep(1, nrow(Media))
例:
> df = data.frame(typeWord = c(rep("bla", 4), rep("tra", 6)), ageGroup = c(rep("10-15", 2), rep("16-21", 4), rep("22-30", 4)), counts = c(1,4,8,2,3,9,5,1,2,1))
> aggregate(counts ~ typeWord + ageGroup, data = df, FUN = sum)
typeWord ageGroup hits
1 bla 10-15 5
2 bla 16-21 10
3 tra 16-21 12
4 tra 22-30 9