我有一个数据集,并不是每个主题的观察都在完全相同的时间点观察到,但我想把它变成一个数据集,每个人的观察结果都在完全相同的时间点被观察到(所以我可以在SAS proc traj).
例如,假设我有数据集"m":
id <- c(1,1,1,1,2,2,3,3,3)
age <- c(2,3,4,5,3,6,2,5,8)
IQ <- c(3,4,5,4,6,5,3,8,10)
m <- data.frame(id,age,IQ)
> m
id age IQ
1 1 2 3
2 1 3 4
3 1 4 5
4 1 5 4
5 2 3 6
6 2 6 5
7 3 2 3
8 3 5 8
9 3 8 10
> unique(age)
[1] 2 3 4 5 6 8
Run Code Online (Sandbox Code Playgroud)
我想把m变成m2.但我只能手动完成.
id2 <- c(1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,3)
age2 <- c(2,3,4,5,6,8,2,3,4,5,6,8,2,3,4,5,6,8)
IQ2 <- c(3,4,5,4,NA,NA,6,5,NA,NA,NA,NA,3,8,10,NA,NA,NA)
m2 <- data.frame(id2,age2,IQ2)
m2 …Run Code Online (Sandbox Code Playgroud) 但是我只知道如何模拟遵循指数分布的数据框并绘制它。
data = data.frame(x=rexp(n = 100000, rate = .65))
m <- ggplot(data, aes(x=data$x))
m + geom_density()
Run Code Online (Sandbox Code Playgroud)
如何绘制真实的指数分布而不是样本的分布图?
我的数据如下:
> zerbedata
group id time measurements
1.1.1 1 1 0.0 4.3
2.1.1 1 2 0.0 3.7
3.1.1 1 3 0.0 4.0
4.1.1 1 4 0.0 3.6
5.1.1 1 5 0.0 4.1
6.1.1 1 6 0.0 3.8
7.1.1 1 7 0.0 3.8
8.1.1 1 8 0.0 4.4
9.1.1 1 9 0.0 5.0
10.1.1 1 10 0.0 3.7
11.1.1 1 11 0.0 3.7
12.1.1 1 12 0.0 4.4
13.1.1 1 13 0.0 4.7
14.2.1 2 14 0.0 4.3
15.2.1 2 15 …Run Code Online (Sandbox Code Playgroud) 我的问题类似于在 R 中用 ggplot 1填充两条黄土平滑线之间的区域
但是我有两个组。
g1<-ggplot(NVIQ_predict,aes(cogn.age, predict, color=as.factor(NVIQ_predict$group)))+
geom_smooth(aes(x = cogn.age, y = upper,group=group),se=F)+
geom_line(aes(linetype = group), size = 0.8)+
geom_smooth(aes(x = cogn.age, y = lower,group=group),se=F)
Run Code Online (Sandbox Code Playgroud)
我想为每个组填充红色和蓝色。
我试过:
gg1 <- ggplot_build(g1)
df2 <- data.frame(x = gg1$data[[1]]$x,
ymin = gg1$data[[1]]$y,
ymax = gg1$data[[3]]$y)
g1 + geom_ribbon(data = df2, aes(x = x, ymin = ymin, ymax = ymax),fill = "grey", alpha = 0.4)
Run Code Online (Sandbox Code Playgroud)
但它给了我错误:Aesthetics 必须是长度为 1 或与 dataProblems 相同的长度
每次我的 geom_ribbon() 数据和 ggplot() 数据不同时,我都会收到相同的错误。
有人可以帮我吗?非常感谢!
我的数据看起来像:
> NVIQ_predict
cogn.age …Run Code Online (Sandbox Code Playgroud)