我试图按月计算滚动/移动平均线.例如,使用ggplot2包中的经济数据,我想构建一个附带的时间序列,表示每个月的3年滚动平均值.
library(ggplot2)
df = economics
df$month = as.POSIXlt(df$date)$mon+1
Run Code Online (Sandbox Code Playgroud)
当我手动分成月度数据时,我得到了我想要的东西:
library(zoo)
df.test = subset(df, month==1)
df.test$uempmed.ma = rollapply(df.test$unemploy, width=3, FUN=mean, na.rm=T,
fill=NA, align="right")
head(df.test)
date pce pop psavert uempmed unemploy year month uempmed.ma
8 1968-01-31 534.7 199920 9.5 4.5 3001 1968 1 NA
20 1969-01-31 590.2 201881 6.5 4.9 2692 1969 1 NA
32 1970-01-31 635.7 204008 8.1 4.5 3453 1970 1 3048.667
44 1971-01-31 681.3 206668 9.9 6.3 4903 1971 1 3682.667
56 1972-01-31 738.4 209061 9.4 6.6 4928 1972 …Run Code Online (Sandbox Code Playgroud) 是否可以使用ggplot根据数据框中包含的预定标准颜色代码对颜色点进行着色?
下面是一些示例数据和代码,以帮助阐明我的问题.
tick <- c("GE","APPL","GM","BTU","WMT","JPM","LUV")
price <- c(22,900,20,22,80,31,35)
volume<- c(300,500,100,107,400,300,325)
df1 <- data.frame(ticker=tick, price=price, volume=volume)
# Here is a sample chart without colors:
p <- ggplot(df1, aes(volume, price))+
geom_point();
p
# I could use astetics and color_brewer to color points by ticker.
# But since I want to have my colors uniform across multiple plots
# outside of this script, I have specified the colors to always
# be used for certian tickers
## color speciciations
## http://wiki.stdout.org/rcookbook/Graphs/Colors%20(ggplot2)/#rcolorbrewer-palette-chart
tick<-c("GE","APPL","GM","BTU","WMT")
ccodes<-c("#3399FF", …Run Code Online (Sandbox Code Playgroud) 当使用scale_colour_manual根据数据框中包含的HEX颜色代码将颜色设置为预定义设置时,有没有人知道任何错误/技巧?
我一直试图使用以下代码从我的数据框中提取预定义的颜色代码.
p <- ggplot(df, aes(x, y, colour=company))
p <- p + geom_point()
p <- p + scale_colour_manual(breaks=df$company, values = df$col)
p
Run Code Online (Sandbox Code Playgroud)
但是,由于某些原因,在渲染绘图时,不会绘制数据中的颜色(即值= df $ col).
任何协助或指导将不胜感激.下面是我的ggplot结构/数据:
structure(list(data = structure(list(x = c(119, 34, 34, 46, 86,
70, 61, 71, 84, 30, 84, 85, 3, 16, 5, 167, 72, 85, 5, 44, 85,
63, 15, 86, 148, 83, 105, 11, 11, 98, 169, 14, 11, 28, 98, 52,
52, 52, 90, 11, 176, 94, 94, 52, 9, 176, 148, 9, 105, …Run Code Online (Sandbox Code Playgroud) 我正在尝试将一个csv文件读入R中,该文件在某些列标题中具有日期值.
例如,数据文件看起来像这样:
ID Type 1/1/2001 2/1/2001 3/1/2001 4/1/2011
A Supply 25 35 45 55
B Demand 26 35 41 22
C Supply 25 35 44 85
D Supply 24 39 45 75
D Demand 26 35 41 22
Run Code Online (Sandbox Code Playgroud)
...而我的read.csv逻辑看起来像这样
dat10 <- read.csv("c:\data.csv",header=TRUE, sep=",",as.is=TRUE)
Run Code Online (Sandbox Code Playgroud)
read.csv工作正常,除了它修改具有日期的列的名称,如下所示:
x1.1.2001 x2.1.2001 x3.1.2001 x4.1.2001
Run Code Online (Sandbox Code Playgroud)
有没有办法防止这种情况,或者之后的简单方法?
我刚开始使用正则表达式。我有以下内容:
files = c("apple_2014_10_17.csv",
"apple_2014_10_18.csv",
"applepie_2014_10_17.csv",
"applepie_2014_10_18.csv")
Run Code Online (Sandbox Code Playgroud)
我只想返回:
apple_2014_10_17.csv
apple_2014_10_18.csv
Run Code Online (Sandbox Code Playgroud)
并且不返回:
applepie_2014_10_17.csv
applepie_2014_10_18.csv
Run Code Online (Sandbox Code Playgroud)
我正在使用以下正则表达式
grepl("apple_*", files)
Run Code Online (Sandbox Code Playgroud)
但它返回所有文件。任何帮助将不胜感激。