Как можно подсчитать каждую уникальную строку / наблюдение для переменной, не задавая вручную строку? - PullRequest
0 голосов
/ 04 октября 2019

Итак, у меня есть некоторые данные, которые выглядят так:

enter image description here

из следующего:

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. 

Я пытаюсь выяснить, сколько уникальных «имен» имеет каждый «стимул», но простой подсчет уникальных предметов, подобных этому , не дает мне 1012 * всехинформация, которая мне нужна:

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 "якорь" был наиболее распространенным именем (17 - 89,4%), но не было полного согласиядля этого имени. У меня ~ 800 различных «стимулов», у каждого из которых ~ 20 «имен». Единственные решения, которые я нашел, требуют ручного указания строки, которую вы хотите посчитать, но с ~ 800 стимулами (и несколькими именами для каждого) это невозможно. Это также потребует ручного «просмотра» данных и оставит место для ошибки (то есть я могу ошибочно утверждать, что некоторые стимулы имеют 100% -ное согласие, хотя на самом деле было другое имя, учитывая, что мне просто не хватало при просмотре данных).

Любая помощь будет оценена!

Ответы [ 2 ]

0 голосов
/ 04 октября 2019

Мы можем использовать table от base R

as.data.frame(table(unique_names[c('names', 'stimuli')]))
0 голосов
/ 04 октября 2019
unique_names %>% count(names,stimuli)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...