如何在不同的图中将相同的颜色固定到一个值?
假设我有两个data.frames df1和df2:
library(ggplot2)
library(gridExtra)
set.seed(1)
df1 <- data.frame(c=c('a', 'b', 'c', 'd', 'e'), x=1:5, y=runif(5))
df2 <- data.frame(c=c('a', 'c', 'e', 'g', 'h'), x=1:5, y=runif(5))
Run Code Online (Sandbox Code Playgroud)
当使用c作为颜色指示器绘制它们时,我得到相同的五种颜色.
g1 <- ggplot(df1, aes(x=x, y=y, fill=c)) + geom_bar(stat="identity")
g2 <- ggplot(df2, aes(x=x, y=y, fill=c)) + geom_bar(stat="identity")
grid.arrange(g1, g2, ncol=2)
Run Code Online (Sandbox Code Playgroud)

但我希望c的相同值得到相同的颜色.
在尝试解析xml文件时,我总是遇到此错误.
一个简单的脚本来重现它:
doc <- xmlRoot(xmlTreeParse("http://www.stat.purdue.edu/~mdw/490M/cdcatalog.xml"))
xpathSApply(doc, "//CATALOG/CD/PRICE", xmlValue)
Error in (function (classes, fdef, mtable) :
unable to find an inherited method for function ‘saveXML’ for signature ‘"character"’
Run Code Online (Sandbox Code Playgroud)
加载以下包:
sessionInfo()
R version 3.1.0 (2014-04-10)
Platform: x86_64-apple-darwin13.1.0 (64-bit)
locale:
[1] de_DE.UTF-8/de_DE.UTF-8/de_DE.UTF-8/C/de_DE.UTF-8/de_DE.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] XML_3.98-1.1
loaded via a namespace (and not attached):
[1] tools_3.1.0
Run Code Online (Sandbox Code Playgroud) 我可以通过初始化data.frame
df <- data.frame(a=numeric(), b=character())
Run Code Online (Sandbox Code Playgroud)
但是如何定义POSIXct类型的列?
df <- data.frame(a=numeric(), b=character(), c=POSIXct())
Run Code Online (Sandbox Code Playgroud)
不行.
如何应用将带有因子的data.frame返回到序列的函数?
例:
s <- factor(c(10, 20, 30))
t <- factor(c("a", "b", "a"))
v <- c(5, 6, 4)
df <- data.frame(s,t,v)
Run Code Online (Sandbox Code Playgroud)
所以data.frame df是这样的:
s t v
1 10 a 5
2 20 b 6
3 30 a 4
Run Code Online (Sandbox Code Playgroud)
我还有一个返回data.frame的函数:
simpleFunc2 <- function(df, x){
tmp <- subset(df, df$s == x)
return(tmp)
}
Run Code Online (Sandbox Code Playgroud)
现在我有一个序列
x <- c(20, 30, 10, 30, 10)
Run Code Online (Sandbox Code Playgroud)
并希望结果auf将函数simpleFunc2应用于此序列.
我用sapply
sapply(x, function(x) simpleFunc2(df, x))
Run Code Online (Sandbox Code Playgroud)
但我明白了
[,1] [,2] [,3] [,4] [,5]
s factor,1 factor,1 factor,1 factor,1 factor,1
t factor,1 factor,1 factor,1 …Run Code Online (Sandbox Code Playgroud) 我有一个带有日期列的data.frame.这些日期可以多次出现,但也可以是零时间:
date value
1 2013-01-01 5
2 2013-01-01 3
3 2013-01-03 3
4 2013-01-04 3
5 2013-01-04 1
6 2013-01-06 1
Run Code Online (Sandbox Code Playgroud)
如何填写此data.frame中的日期空白,以便我得到以下内容?
date value
1 2013-01-01 5
2 2013-01-01 3
3 2013-01-02 0
4 2013-01-03 3
5 2013-01-04 3
6 2013-01-04 1
7 2013-01-05 0
8 2013-01-06 1
Run Code Online (Sandbox Code Playgroud)
欢迎任何帮助.
TIA,Jerry
鉴于以下数据:
set.seed(1)
data <- data.frame(o=c('a','a','a','a','b','b','b','b','c','c','c','c'), t=c(1,2,3,4,1,2,3,4,1,2,3,4), u=runif(12), v=runif(12))
data
o t u v
1 a 1 0.26550866 0.6870228
2 a 2 0.37212390 0.3841037
3 a 3 0.57285336 0.7698414
4 a 4 0.90820779 0.4976992
5 b 1 0.20168193 0.7176185
6 b 2 0.89838968 0.9919061
7 b 3 0.94467527 0.3800352
8 b 4 0.66079779 0.7774452
9 c 1 0.62911404 0.9347052
10 c 2 0.06178627 0.2121425
11 c 3 0.20597457 0.6516738
12 c 4 0.17655675 0.1255551
Run Code Online (Sandbox Code Playgroud)
我想计算由coloumn o定义的每组的滚动平均值(包动物园).滚动平均值的顺序由t设定.应将滚动平均值添加为data.frame的新列.
我想使用magrittr和dplyr.我试过了
data %>%
group_by(o) %>% …Run Code Online (Sandbox Code Playgroud) 说,我有一个向量和一个带有一个参数的函数,它返回一个data.frame.我想将该函数应用于向量的每个元素,并将结果合并到一个大数据框架中.
我在下面用lapply和rbind获得了工作命令.但它看起来有点"不自然".有更好,更清晰的方式吗?我对plyr有一些想法,但我想避免使用plyr,因为我想使用dplyr代替.
my_vector <- c(1,2,3)
my_function <- function(a){
unif <- runif(a)
norm <- rnorm(a)
return(data.frame(unif=unif, norm=norm))
}
as.data.frame(do.call(rbind,(lapply(my_vector, my_function))))
Run Code Online (Sandbox Code Playgroud) 给定包含时间序列和一个或多个分组字段的data.frame.所以我们有几个时间序列 - 每个分组组合一个.但有些日期不见了.那么,使用正确的分组值添加这些日期最简单(就最"整齐的方式"而言)是什么?
通常我会说我生成一个包含所有日期的data.frame并使用我的时间序列执行full_join.但现在我们必须为每个分组值组合执行此操作 - 并填写分组值.
我们来看一个例子:
首先,我创建一个缺少值的data.frame:
library(dplyr)
library(lubridate)
set.seed(1234)
# Time series should run vom 2017-01-01 til 2017-01-10
date <- data.frame(date = seq.Date(from=ymd("2017-01-01"), to=ymd("2017-01-10"), by="days"), v = 1)
# Two grouping dimensions
d1 <- data.frame(d1 = c("A", "B", "C", "D"), v = 1)
d2 <- data.frame(d2 = c(1, 2, 3, 4, 5), v = 1)
# Generate the data.frame
df <- full_join(date, full_join(d1, d2)) %>%
select(date, d1, d2)
# and ad to value columns
df$v1 <- runif(200)
df$v2 …Run Code Online (Sandbox Code Playgroud) 我想为ggplot2定义一个主题,以便geom_bar()的默认颜色不是黑色.
我怎样才能做到这一点?
我有以下R脚本:
library(ggplot2)
library(gridExtra)
Sys.setenv(LANG ="en")
c1 <- ggplot(mtcars, aes(factor(cyl))) + geom_bar()
c2 <- ggplot(mtcars, aes(factor(cyl))) + geom_bar() + coord_flip()
grid.arrange(c1, c2, ncols=1)
Run Code Online (Sandbox Code Playgroud)
我在grid.arrange中遇到以下错误:
在ArrangeGrob中出错(...,as.table = as.table,clip = clip,main = main,:输入必须是grobs!
我无法弄清楚导致问题的原因.
这是我使用过的版本:
sessionInfo()R版本3.0.2(2013-09-25)平台:x86_64-apple-darwin10.8.0(64位)
locale:
[1] de_DE.UTF-8/de_DE.UTF-8/de_DE.UTF-8/C/de_DE.UTF-8/de_DE.UTF-8
attached base packages:
[1] grid stats graphics grDevices utils datasets methods base
other attached packages:
[1] gridExtra_0.9.1 ggplot2_0.9.3.1
loaded via a namespace (and not attached):
[1] colorspace_1.2-4 digest_0.6.4 gtable_0.1.2 labeling_0.2 MASS_7.3-31 munsell_0.4.2 plyr_1.8.1 proto_0.3-10 Rcpp_0.11.1 reshape2_1.2.2
[11] scales_0.2.4 stringr_0.6.2 tools_3.0.2
Run Code Online (Sandbox Code Playgroud)