1

感谢这个精彩的社区和专家的回复。这是我关于stackoverflow的第一个问题。我做了研究,但找不到我想要做的事情。如何在 r 中编写一个有效的代码,该代码将创建一个带有辅助 Y 的图表,并且还根据某个变量对总计数进行分组?我希望 groupby 在代码中进行操作,而不必为要在 X 上绘制的每个变量创建单独的数据框。我在 r 数据框中有数千行和数百列。我的示例数据如下所示。(20 x 5)

tv = c(0,   1,  1,  1,  0,  0,  1,  0,  1,  1,  0,  0,  1,  1,  0,  0,  0,  1,  0,  0)
pr1 =c("AA",    "AB",   "ZH",   "AA",   "ZA",   "AB",   "ZA",   "ZA",   "AA",   "AA",   "ZA",   "AA",   "ZG",   "AA",   "ZF",   "AB",   "AA",   "AB",   "AA",   "AA")
pr2 =c("B", "F",    "F",    "J",    "E",    "E",    "J",    "B",    "J",    "F",    "B",    "B",    "J",    "B",    "F",    "J",    "B",    "F",    "B",    "E")
pr3 =c(13,  13, 25, 13, 13, 13, 13, 1,  13, 13, 13, 13, 25, 13, 25, 1,  13, 13, 13, 13)
sample_data = data.frame("SN"= c(1:20),"Target_Vbl"=tv,Predictor_1=pr1,Predictor_2=pr2,Predictor_3=pr3)

从这个示例数据中,我可以创建我在 excel 中寻找的图表,但在 r 中绘制它时会丢失。我想将代码重新用于任何其他预测变量,但我的 Y 轴将始终保持不变,即主要 Y 是 Target_Vbl 的总数,次要 Y 是绘制在 X 轴上的给定预测变量类别的百分比。

图表应如下所示...当前为 Predictor_1 绘制(在 excel 中绘制)

在此处输入图像描述

编辑 - 尝试 plotrix 之后

继续使用 sample_data,我创建了一个汇总数据以利用 plotrix 包。(感谢lawyeR) twoord.plot 让我更接近我正在寻找的东西,但是几乎没有如下差异 - 1. 没有得到左 Y 轴的 tc 条(predictor_1 的总数)......我做到了尝试在“类型”选项中提及“栏”,但它不起作用。2. X 轴标签不显示数据中的值,但默认为数字。它应该显示“AA”,“AB”,“ZA”等......而不是1,2,3...... 3.有没有办法让整个过程更简洁。我觉得我的代码充其量是粗糙的。任何指针都会有所帮助。

library(sqldf)
smry = sqldf("Select Predictor_1, count(Target_Vbl) as tc, sum(Target_Vbl) 
as conv from sample_data Group by Predictor_1")
smry$ratio = round((smry$conv/smry$tc),2)
library(plotrix)
twoord.plot(smry$Predictor_1, smry$tc,
        smry$Predictor_1, smry$ratio, 
        type= c("l", "l"), lcol=3,rcol=4,do.first="plot_bg(\"gray\")")

图表现在看起来像这样 - twoord.plot 的输出

4

0 回答 0