在R中绘制多个级别的二进制频率图

3
我有一个数据集,其中包含参与者对某些问题的二进制答案。这些问题可以有3种不同的基本条件和一种0/1变化;也就是说,问题可以被指定为1.0、1.1、2.0等和3.1。我的数据集在不同的行中保存每个答案,包括一个用于基本条件和一个用于修饰符的列(还有一个交互列确定组合;请参见下面的示例)。
我想绘制的是每个问题答案比例的图表,最好按基本水平分组:即三个2条形图组,显示特定结果的频率。
以下是可重现的示例数据集,其中Base_con、Var和Dec分别表示基本条件、变化和决策(答案):
# load example dataset with relevant columns
require(RCurl)
my_csv = getURL(
  "https://docs.google.com/spreadsheets/d/1x9PUZwPGmye6QDk7_4M_HslrmbgEC3DZ-v-VMvFkE6U/pub?output=csv")
df1 = read.csv(textConnection(my_csv))
# set columns as factors because they are numerically coded
df1$Base_con = as.factor(df1$Base_con)
df1$Var = as.factor(df1$Var)
df1$Dec = as.factor(df1$Dec)
df1$Int = interaction(df1$Base_con, df1$Var)

我发现cdplot函数非常接近我正在寻找的内容,但只接受一个连续自变量。希望有人能帮忙解决这个问题,它看起来并不难做到,但我在这里或其他地方都没有找到答案。我知道我可以在其他软件中构建图形,但我更愿意学习如何在R中完成它,而且这将帮助我检查数据以及统计分析。


1
@Hack-R,抱歉。我正在编辑帖子并提供信息。Var是变量的代码,而Dec则是决策或答案。 - Lea_Casiraghi
1
现在我们来谈谈 :). 我想要一个单一的图表,显示所有 Base_con 的水平(或者,如您所建议的,三个图表,每个图表一个),并将 Var 的值放在并排的列中。 - Lea_Casiraghi
非常好,感谢您的澄清。我刚刚更新了我的答案,请告诉我它与您所需的有多接近。 - Hack-R
1个回答

2
for(i in unique(df1$Base_con)){
  barplot(c(table(df1$Dec[df1$Base_con == i & df1$Var == 1]),
           table(df1$Dec[df1$Base_con == i & df1$Var == 0])),
          main = paste("Your title goes here" , i),
          xlab = "Your label goes here")
}

Base_con == 2的示例图:

enter image description here


@Lea_Casiraghi 我将它改成了一个 barplot,并将绘制的变量更改为 Var,重新标记了标题和X轴。在此答案版本中使用 Var 的因子版本。 - Hack-R
谢谢。这看起来很像我要找的,但我认为有些问题。显示的频率似乎代表了Base_conVar值出现的次数,而不是根据每个Base_con级别中Var级别的频率来计算Dec 1(或0,它们是相同的)。我是对的吗?只是作为指南,Dec应该主要显示Base_con == 3的0(对于任何Var值),并且主要显示Base_con == 1的1。 - Lea_Casiraghi
@Lea_Casiraghi 你能运行这段代码并告诉我结果吗?这样可以帮助我找出问题所在。table(df1$Var[df1$Base_con==1]);table(df1$Var[df1$Base_con==3]) - Hack-R
1
是的,这基本上就是我想要的!我尝试建议的变化只是附属品,我相信我可以自己尝试包括它们:1)绘制%或频率而不是总病例(每个“Var”级别的每对条形图应加起来为100%),以及2)删除“Dec == 1”或0条,因为使用%时只需要查看一个。非常感谢!这是一次很棒的经历。 - Lea_Casiraghi
1
@Lea_Casiraghi 很好,很高兴能够帮助到你。如果想获取%而不是频率,我们只需将table()语句包装在prop.table中即可。你可能已经看到我这样做了多次(如果点击链接,可以在编辑历史记录中看到)。今天稍后当我有几分钟空闲的时候,我会尝试回来更新一下你请求的其他内容。 - Hack-R
显示剩余6条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接