如何从R中得到平均值的曲线图

如何从R中得到平均值的曲线图,r,plot,R,Plot,我有不同的宿舍 Quarter GrossMargin 2009 Q1 17.60% 2009 Q1 17.80% 2010 Q2 18.50% 2011 Q1 21.60% 像这样看,我有大数据集。我想在R中绘制它。我使用了qplot(df$Quarter,df$GrossMargin,binwidth=.5) 每次事件的数据点上都有点。与x轴2009年第一季度一样,Y轴上有两

我有不同的宿舍

Quarter           GrossMargin
2009 Q1           17.60%

2009 Q1            17.80%

2010 Q2             18.50%

2011 Q1             21.60%
像这样看,我有大数据集。我想在R中绘制它。我使用了
qplot(df$Quarter,df$GrossMargin,binwidth=.5)

每次事件的数据点上都有点。与x轴2009年第一季度一样,Y轴上有两个相应的数据点,一个位于17.6,另一个位于17.8。但我想要每个季度的平均值,就像在x轴2009中一样,Q1应该对应于Y轴的单个值(即17.6和17.8的平均值)。若我试着做平均值(格罗斯马金),它给出了整列的平均值,这是并没有用的。我所有的季度(2009年第一季度、第二季度、第三季度、2010年第一季度、第二季度、第三季度)都在一列中,格罗斯马金的相应值在另一列中。如何在R中执行此操作

        Order.Id    ProductID   UnitPrice   UnitCost    Quantity    Order.Date  TotalUnitPrice  Quarter GrossMargin Customer.Id TotalUnitCost
1   24849   BDM10023    28.87   23.8    1   01-01-2009  28.87   2009 Q1 17.60%  10025   23.8
2   24849   1283484PMR29    77.84   64  2   01-01-2009  155.68  2009 Q1 17.80%  10025   128
3   24850   1283484SST30    25.78   20  4   01-02-2009  103.12  2009 Q1 22.40%  10096   80
4   24852   GFO20015    8.2 6.75    1   01-02-2009  8.2 2009 Q1 17.70%  10062   6.75
5   24852   OCM10018    8.24    6.8 2   01-02-2009  16.48   2009 Q1 17.50%  10062   13.6
6   24852   BDM10021    8.24    6.8 4   01-02-2009  32.96   2009 Q1 17.50%  10062   27.2
7   24852   POW20011    11.33   9.25    4   01-02-2009  45.32   2009 Q1 18.40%  10062   37
8   24852   AP6011  9.22    7.5 2   01-02-2009  18.44   2009 Q1 18.70%  10062   15
9   24852   POW30012    8.24    6.5 2   01-02-2009  16.48   2009 Q1 21.10%  10062   13
10  24852   PPF20017    11.86   10.25   1   01-02-2009  11.86   2009 Q1 13.60%  10062   10.25
11  24853   AP3008  8.2 6.75    1   01-02-2009  8.2 2009 Q1 17.70%  10030   6.75
12  24855   VEV10023    8.2 6.75    1   01-03-2009  8.2 2009 Q1 17.70%  10037   6.75
13  24855   AP6006  7.73    6.3 2   01-03-2009  15.46   2009 Q1 18.50%  10037   12.6
14  24855   AP5010  8.2 6.75    2   01-03-2009  16.4    2009 Q1 17.70%  10037   13.5
15  24856   1283484PMS30    7.21    5.9 2   01-03-2009  14.42   2009 Q1 18.20%  10078   11.8
16  24857   AP4009  7.16    5   2   01-03-2009  14.32   2009 Q1 30.20%  10032   10
17  24857   GFO10014    7.16    5.9 2   01-03-2009  14.32   2009 Q1 17.60%  10032   11.8
18  24858   AP3003  6.17    5   1   01-04-2009  6.17    2009 Q1 19.00%  10243   5
19  24858   OWW3009 10.25   8.75    1   01-04-2009  10.25   2009 Q1 14.60%  10243   8.75
20  24858   BDM10022    6.18    5.1 1   01-04-2009  6.18    2009 Q1 17.50%  10243   5.1
21  24858   AP2008  6.13    5   1   01-04-2009  6.13    2009 Q1 18.40%  10243   5
22  24858   AP5005  6.7 5.25    1   01-04-2009  6.7 2009 Q1 21.60%  10243   5.25
23  24859   POW30012    8.24    6.5 2   01-04-2009  16.48   2009 Q1 21.10%  10052   13
24  24860   POW20011    11.33   9.25    4   01-04-2009  45.32   2009 Q1 18.40%  10019   37
25  24861   POW10010    18.14   15  2   01-04-2009  36.28   2009 Q1 17.30%  13710   30
26  24861   OWW3009 10.25   8.75    1   01-04-2009  10.25   2009 Q1 14.60%  13710   8.75
27  24862   1283484CPN28    13.35   11  4   01-04-2009  53.4    2009 Q1 17.60%  15310   44
将此粘贴到excel中。我使用R中的write命令创建了这个excel文件。原始文件中大约有10000多条记录

  > str(df)
'data.frame':   29487 obs. of  11 variables:
 $ Order.Id      : num  24849 24849 24850 24852 24852 ...
 $ ProductID     : Factor w/ 42 levels "1202020SFB25",..: 24 4 7 29 31 22 36 19 37 39 ...
 $ UnitPrice     : num  28.87 77.84 25.78 8.2 8.24 ...
 $ UnitCost      : num  23.8 64 20 6.75 6.8 ...
 $ Quantity      : num  1 2 4 1 2 4 4 2 2 1 ...
 $ Order.Date    : Factor w/ 1261 levels "1/1/2009","1/1/2010",..: 1 1 45 45 45 45 45 45 45 45 ...
 $ TotalUnitPrice: num  28.9 155.7 103.1 8.2 16.5 ...
 $ Quarter       : chr  "2009 Q1" "2009 Q1" "2009 Q1" "2009 Q1" ...
 $ TotalUnitCost : num  23.8 128 80 6.75 13.6 ...
 $ GrossMargin   : chr  "17.6%" "17.8%" "22.4%" "17.7%" ...
 $ Customer.Id   : num  10025 10025 10096 10062 10062 ...
    > dput(df)

 15097, 15097, 12466, 12466, 15104, 15104, 15104, 15104, 15104, 
    15104, 15104, 15104, 15104, 15104, 15104, 15104, 15000, 15099, 
    15099, 15099, 15099, 15099, 15099, 15099, 15099, 15099, 15099, 
    15099, 15099, 15099, 15099, 15099, 15099, 15099, 15099, 15099, 
    15099, 15099, 15099, 14546, 14546, 14546, 14546, 14546, 15349, 
    15349, 15349, 14729, 14729, 14729, 15101, 15101, 15101, 15101, 
    15101, 15101, 15101, 15101, 15101, 15101, 15185, 15185, 15185, 
    15185, 15185, 15185, 15185, 15185, 10435, 10435, 10435, 10435, 
    10435, 10435, 10435, 15319, 15319, 15319, 15319, 15319, 15319, 
    15319, 15319, 15319, 15319, 15319, 15319, 15319, 15319, 15319, 
    15319, 15319, 15319, 15319, 15842, 15842, 15842, 15352, 15352, 
    15352, 15352, 15352, 15352, 15352, 15352, 12173, 10576, 10426, 
    11971, 15276, 15083, 15209, 15181, 15176, 15204, 15239, 15597, 
    15184, 15149, 15093, 15162, 10916, 15175, 13380, 15246, 15206, 
    14859, 12304, 12074, 15174, 13467, 12633, 13307, 10414, 10456, 
    15170, 15173, 15172, 15187, 15201, 16160, 15171, 11640, 12814, 
    16013, 10552, 15255, 14834, 14525, 15285, 15286, 15163, 15169, 
    15268, 15202, 14999, 15264, 15166, 15377, 15211, 14167, 15203, 
    15210, 12153, 15299, 15299, 15299, 15299, 15299, 15299, 15299, 
    15299, 15299, 15299, 15299, 15299, 15299, 15299, 15299, 15299, 
    15299, 15299, 15299, 15299, NA, NA)), .Names = c("Order.Id", 
"ProductID", "UnitPrice", "UnitCost", "Quantity", "Order.Date", 
"TotalUnitPrice", "Quarter", "TotalUnitCost", "GrossMargin", 
"Customer.Id"), row.names = c(NA, 29487L), class = "data.frame")

是一个窗口控制台的输出

在这里,您可以使用
数据。表
包中的求平均值。 未经测试,因为您未提供可复制的数据

library(data.table)
dt = as.data.table(df)
plotData = dt[,list(MarginAvg=mean(GrossMargin)),by=Quarter]
qplot(plotData$Quarter, plotData$MarginAvg)
例如:

dt = data.table(Quarter=c(1,1,2,3),GrossMargin=c(.176,.178,.185,.216))
plotData = dt[,list(MarginAvg=mean(GrossMargin)),by=Quarter]
plotData
   Quarter MarginAvg
1:       1     0.177
2:       2     0.185
3:       3     0.216
plot(plotData$Quarter, plotData$MarginAvg) #just a plot

首先,将
%
字符串转换为数值:

df[2] <- as.numeric(gsub("%", "", as.character(df[ , 2])))
绘图:


这个答案首先是在回答问题时发布的。

我安装了data.table包并尝试了>library(data.table)>dt=as.data.table(df)>plotData=dt[,list(MarginAvg=mean(GrossMargin)),by=quarty]as.environment中有15个警告(使用warnings()查看它们)>qplot(dt$quarty,dt$MarginAvg)错误(何处):“where”缺失我没有得到任何我错了的图表,请在我说>plotData季度边际时提问1:2009 Q1 NA 2:2009 Q2 NA 3:2011 Q1 NA 4:2010 Q2 NA 5:2010 Q4 NA 6:2012 Q1 NA 7:2009 Q3 NA 8:2010 Q1 NA 9:2011 Q3 Nare在这篇文章之后写下你的问题,你需要显示你的真实数据,就像你在例子中给出的那样,我不能写Quarter=c(1,1,2,3……),GrossMargin=c(.176,.178,…),因为有超过10000条记录说我名声不好10):要上传图像df[2]@bas,请发布
str(df)的输出
进入您的问题。这允许复制您的数据集。我已在中输入str(df)的输出question@bas你能用dput(df)的输出替换你的数据吗?@Sven Hohenstein我已经输入了dput(df)的输出
dat <- aggregate(GrossMargin ~ Quarter, df, mean)
plot(as.factor(dat$Quarter), dat$GrossMargin)