【发布时间】:2021-04-15 21:17:02
【问题描述】:
我有一个 2X2 设计(它更复杂,但下面是一个简单的例子来说明我的问题)。
假设我的输出数据如下所示:
图中,ID是每个参与者,block number是他们看到的条件,每个人看到了4个问题。
平衡发挥作用的地方(例如)是相同的项目(例如项目 1)在 Q1-Q4 之间的不同位置重复出现在参与者之间,具体取决于区块。在上图中,Item1 将是红色数字。我使用 case_when 提取组合并给我一个干净的 Item1 响应列:
data <- data %>% mutate(
Item1= case_when(
BlockNumber == 'Block1' & Q1 ~ Q1,
BlockNumber == 'Block5' & Q2 ~ Q2,
BlockNumber == 'Block6' & Q3 ~ Q3,
BlockNumber == 'Block7' & Q4 ~ Q4))
这给了我类似的东西:
代码完全按照我的需要做,但零值正在下降 [在图片中突出显示]。
它不是零,而是一个 NA 值。像这样的东西: enter image description here
问题是零在我的数据中是有意义的,我需要保留它们。
有人知道我可以添加/使用什么代码来避免这种情况吗?之后它真的搞砸了我的平均分数,因为零被丢弃了。
【问题讨论】:
-
如果您包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出,则更容易为您提供帮助。请不要张贴数据图片。我们不能轻易地将其复制/粘贴到 R 中进行测试。
-
@VVO 我认为你误解了这个问题。不是 0 导致它,而是当 blocknumber 大于 4 返回 null 时你的情况。你需要添加更多的情况。
-
我相信应该说
Block5来获取Q2中你用红色标记的数字 - 这不正确吗? -
我还是不明白这个问题。在您的顶部表格屏幕截图中,
BlockNumber是一个包含从 1 到 8 的数字的字段。您的测试检查 BlockNumber 中的任何这些值是否与“Block1”之类的文本匹配,这将始终为假,因为没有任何表的该列中包含“阻止”一词的值。我认为值表或代码不是您正在使用的,否则我不明白它是如何为您工作的。 -
抱歉,我刚刚意识到图片并不能准确反映我的数据。在我的数据中,BlockNumber 列包含因子“Block1”“Block2”“Block3”。 @William Gram 发现的问题是我过度指定了。我所需要的只是 BlockNumber== 'Block5' ~ Q1 告诉 R 从哪里获取值。然而,我在 &Q1 中添加了额外的信息,这给了我一个错误,因此返回了一个 NA。