【问题标题】:R Studio "filter" function question. Filtering out items that do not contain a certain valueR Studio“过滤器”功能问题。过滤掉不包含特定值的项目
【发布时间】:2021-05-06 12:43:09
【问题描述】:

我有一个包含两列感兴趣的数据集,一列是“响应”列(任务参与者可以通过输入他们认为呈现的图像是什么来响应 - 所以这个类是一个“字符”为他们的回应)。第二列是“Image”列(包含实际显示的图像的名称)。

我想做的是看看有多少响应与图像实际不匹配。由于参与者可以用多个词来表征和命名一个对象,我还希望有几个选项来确定响应的可接受性。到目前为止,我所做的是尝试对已呈现的 300 个图像中的每一个使用过滤器功能,包括对单个图像的呈现的所有响应以及对包含正确单词的该图像的所有响应。见下文:

Image1CorrectAnswers <- data %>% filter(data$Image == "Image1.jpg", data$Response == "bike")

然而,我想知道的是 1) 是否可以将过滤器功能用于包含该特定图像的正确单词的响应? 2)以及我是否可以有多个不同的“可接受”词来“过滤”不正确的响应(因为不同的参与者可以对同一图像做出不同的回答,但两者都是正确的)。目标是为 300 幅图像中的每幅图像设置一个最终变量,该变量包含不正确的响应。

提前谢谢你。

【问题讨论】:

  • 您好 Alexandria,这两个问题的答案都是肯定的,但是提供一个数据示例会有所帮助,以便更好地为您提供帮助。
  • 对于问题 1,您可以使用 != 而不是 ==。或者在多个选项%in%! %in% 的情况下。例如Image != "Image1.jpg"! Image %in% c("Image1.jpg", "Image2.jpg")。如果您需要更多帮助,请分享数据样本以更好地说明问题。 dput(data[1:10, ]) 是共享前 10 行数据的好方法 - dput() 可复制/粘贴,包含结构和类信息。
  • 另外,在dplyr 函数中你不应该使用data$。即把data %&gt;% filter(data$Image == "Image1.jpg", data$Response == "bike")改成`data %>% filter(Image == "Image1.jpg", Response == "bike")`

标签: r filter dplyr


【解决方案1】:

如果我理解正确,您需要确定数据集中哪些行的“响应”列与“图像”列匹配,对吧?

好吧,考虑到您的“图像”列是一个文件名(例如,以 .jpg 结尾),也许您可​​以拆分/删除文件扩展名。因此,您可以直接找出正确标记的行(响应 = 图片)

说,

correct_responses <- data$Response %in% strsplit(data$Image, ".jpg")

这样,您可以通过以下方式访问正确和不正确的行:

correct_data <- data[correct_responses, ]
incorrect_data <- data[!correct_responses, ]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-13
    • 1970-01-01
    • 2022-10-21
    • 1970-01-01
    • 1970-01-01
    • 2022-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多