【问题标题】:How can I count each unique string / observation for a variable, without manually specifying a string?如何在不手动指定字符串的情况下计算变量的每个唯一字符串/观察值?
【发布时间】: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 %&gt;% count(stimuli, names)怎么样

标签: r count pipe unique tidyverse


【解决方案1】:
unique_names %>% count(names,stimuli)

【讨论】:

  • 这看起来很简单!我只需要删除重复的行,然后我就有了我正在寻找的确切输出。非常感谢 - 我会尽快接受您的回答。
  • 注意我更换了我的解决方案,一旦我意识到你不需要保留所有的行。这将自动删除重复项。
  • 更好!我只是在它下面添加了'''distinct()''',但即使是“count”也不需要。完美!
【解决方案2】:

我们可以从base R使用table

as.data.frame(table(unique_names[c('names', 'stimuli')]))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-30
    相关资源
    最近更新 更多