我有一个数据框,在一列中有一长串日期,在另一列中有值,如下所示:
set.seed(1234)
df <- data.frame(date= as.Date(c('2010-09-05', '2011-09-06', '2010-09-13',
'2011-09-14', '2010-09-23', '2011-09-24',
'2010-10-05', '2011-10-06', '2010-10-13',
'2011-10-14', '2010-10-23', '2011-10-24')),
value= rnorm(12))
Run Code Online (Sandbox Code Playgroud)
我需要计算每个月每10天的平均值,但无论年份如何,都是这样:
dfNeeded <- data.frame(datePeriod=c('period.Sept0.10', 'period.Sept11.20', 'period.Sept21.30',
'period.Oct0.10', 'period.Oct11.20', 'period.Oct21.31'),
meanValue=c(mean(df$value[c(1,2)]),
mean(df$value[c(3,4)]),
mean(df$value[c(5,6)]),
mean(df$value[c(7,8)]),
mean(df$value[c(9,10)]),
mean(df$value[c(11,12)])))
Run Code Online (Sandbox Code Playgroud)
有这么快的方法吗?
我有一个如下所示的数据框:
set.seed(300)
df <- data.frame(site = sort(rep(paste0("site", 1:5), 5)),
value = sample(c(1:5, NA), replace = T, 25))
df
site value
1 site1 NA
2 site1 5
3 site1 5
4 site1 5
5 site1 5
6 site2 1
7 site2 5
8 site2 3
9 site2 3
10 site2 NA
11 site3 NA
12 site3 2
13 site3 5
14 site3 4
15 site3 4
16 site4 NA
17 site4 NA
18 site4 4
19 site4 4
20 site4 4 …Run Code Online (Sandbox Code Playgroud) 我有这个数据框:
mtcars_sub <- mtcars[1:5,c("mpg", "disp")]
mtcars_sub$car <- rownames(mtcars_sub)
rownames(mtcars_sub) <- 1:5
mtcars_sub
mpg disp car
1 21.0 160 Mazda RX4
2 21.0 160 Mazda RX4 Wag
3 22.8 108 Datsun 710
4 21.4 258 Hornet 4 Drive
5 18.7 360 Hornet Sportabout
Run Code Online (Sandbox Code Playgroud)
我需要将 data.frame 重新整形为以下格式:

reshape2我特别在寻找使用该包的答案
假设我有这个字符串:
fruits <- c("apple", "pear", "orange", "banana", "melon")
Run Code Online (Sandbox Code Playgroud)
我可以将每个元素折叠成一个字符串,如下所示:
cat(paste(fruits, collapse = ", "))
Run Code Online (Sandbox Code Playgroud)
但是如何在最后一个元素之前插入 and 呢?请注意,我的真实字符串长度有所不同。
输出应该是:
apple, pear, orange, banana and melon
Run Code Online (Sandbox Code Playgroud) 如何在绘图中添加泊松回归线?我尝试了以下,但abline函数不起作用.这是因为abline()使用截距和斜率,而泊松回归线使用对数链接.
x = rpois(12, 5)
plot(x, axes = F)
axis(1,at=1:length(month.name), labels = month.name)
axis(side = 2)
y = c(1:12)
poislm = glm(x~y, family=poisson)
abline(poislm)
Run Code Online (Sandbox Code Playgroud) 我想在 R 中绘图的绘图区域之外添加点(星号)。但是,以下代码仅允许在绘图区域内添加点:
x = c(1:10)
y = c(1:10)
plot(x,y)
points(11, 7, pch = 8)
Run Code Online (Sandbox Code Playgroud)
如何调整代码以允许在绘图区域之外绘制点?
我试图用knitr创建的图形标题中的一些文字斜体显示.我在.Rnw文件中有以下代码,我正在使用knitr将其转换为.tex文件:
<<plot_setosa, fig.cap="A plot of $\\textit{setosa}$">>=
plot(iris[iris$Species == "setosa",])
@
Run Code Online (Sandbox Code Playgroud)
如何在图标题中将setosa斜体化?
我有这个data.frame:
df <- data.frame(
id = c("x1", "x2", "x3", "x4", "x5", "x1", "x2", "x6", "x7", "x8", "x7", "x8" ),
age = c(rep("juvenile", 5), rep("adult", 7))
)
df
id age
1 x1 juvenile
2 x2 juvenile
3 x3 juvenile
4 x4 juvenile
5 x5 juvenile
6 x1 adult
7 x2 adult
8 x6 adult
9 x7 adult
10 x8 adult
11 x7 adult
12 x8 adult
Run Code Online (Sandbox Code Playgroud)
每行代表一个人.我想拉出所有成年人再次看到青少年的行.我不希望最初看到成年人的行再次成为成年人(ids x7和x8).所以得到的data.frame应该是这样的:
id age
1 x1 juvenile
2 x2 juvenile
3 x1 adult
4 x2 …Run Code Online (Sandbox Code Playgroud) 我有这个data.frame:
df <- data.frame(id = rep(c("one", "two", "three"), each = 10), week.born = NA)
df$week.born[c(5,15,28)] <- c(23,19,24)
df
id week.born
1 one NA
2 one NA
3 one NA
4 one NA
5 one 23
6 one NA
7 one NA
8 one NA
9 one NA
10 one NA
11 two NA
12 two NA
13 two NA
14 two NA
15 two 19
16 two NA
17 two NA
18 two NA
19 two NA
20 two NA …Run Code Online (Sandbox Code Playgroud) 这段代码:
df <- data.frame(day <- 0:365, value = 1)
library(ggplot2)
ggplot(df, aes(day, value)) + geom_blank() + scale_x_continuous(breaks = seq(0, 365, 10)) + theme_bw()
Run Code Online (Sandbox Code Playgroud)
产生这个情节:

使用R代码,我想根据day哪个月落在哪个阴影的背景.我希望情节看起来如下(情节背景是Photoshop).我会对使用的解决方案特别感兴趣lubridate.