【发布时间】:2019-10-04 12:51:52
【问题描述】:
所以我有一些看起来像这样的数据:
从运行以下:
unique_names <- naming_data %>%
gather(stimuli, names) %>% # Change from wide to long format.
group_by(stimuli) %>% # Set image name as grouping variable.
arrange (stimuli, names) %>% # Sort by stimuli, then by names.
na.omit() %>% # Drop NA rows.
filter(!str_detect(names, 'no')) # Drop rows with 'no' responses.
我试图找出每个“刺激”有多少个独特的“名称”,但是像这样 不简单地计算独特的项目并不能提供我需要的所有信息:
stimuli unique
anchor1_photo_colour 3
apple2_photo_grey 4
相反,我需要列出为每个“刺激”提供的所有唯一“名称”(每个“刺激”的这个数字会有所不同 - 例如,有些可能只有 1 个名称,其他可能有 5 个)。然后我想计算每一个的出现次数,这样我就可以计算比例并查看哪个给定的“名称”最频繁。我正在寻找与此类似的输出:
stimuli names count
anchor1_photo_colour anchor 17
anchor1_photo_colour pickaxe 1
anchor1_photo_colour shovel 1
apple2_photo_grey apple 16
apple2_photo_grey peach 2
apple2_photo_grey fruit 1
apple2_photo_grey a 1
然后我可以确定,对于 anchor1_photo_colour,“anchor”是最常见的名称(17 - 89.4%),但这个名称并没有完全一致。我有约 800 种不同的“刺激”,每一种都有约 20 个“名称”。我发现的唯一解决方案需要手动指定要计数的字符串,但是有大约 800 个刺激(并且每个刺激有多个名称),这是不可能的。这也将涉及手动“查看”数据,并为错误留有余地(即,我可能错误地指出某些刺激具有 100% 的一致性,而事实上,考虑到我在观察数据时碰巧错过了一个不同的名称)。
任何帮助将不胜感激!
【问题讨论】:
-
library(data.table); setDT(data)[, .(count = .N), by = .(stimuli, names)] -
naming_data %>% count(stimuli, names)怎么样
标签: r count pipe unique tidyverse