我正在使用cut函数将我的数据拆分为相同的bin,它可以完成工作,但我对它返回值的方式不满意.我需要的是箱子的中心而不是上端和下端.
我也尝试过使用cut2{Hmisc},这给了我每个箱子的中心,但是它在包含相同数量的观察的箱子中划分数据范围,而不是长度相同.
有人有解决方案吗?
我有一个如下所示的数据框:
site date var dil
1 A 7.4 2
2 A 6.5 2
1 A 7.3 3
2 A 7.3 3
1 B 7.1 1
2 B 7.7 2
1 B 7.7 3
2 B 7.4 3
Run Code Online (Sandbox Code Playgroud)
我需要添加一个名wt为此数据框的列,其中包含计算加权平均值所需的加权因子.该加权因子必须被导出的每个组合site和date.
我正在使用的方法是首先构建一个计算weigthing因子的函数:
> weight <- function(dil){
dil/sum(dil)
}
Run Code Online (Sandbox Code Playgroud)
然后为site和的每个组合应用函数date
> df$wt <- ddply(df,.(date,site),.fun=weight)
Run Code Online (Sandbox Code Playgroud)
但我收到此错误消息:
Error in FUN(X[[1L]], ...) :
only defined on a data frame with all numeric variables
Run Code Online (Sandbox Code Playgroud) 这是一个简单的问题,肯定你已经遇到过,但是让我头疼不已......
我有这样的数据帧:
set.seed(3)
mydata <- data.frame(var = rnorm(100,20,1),
temp = sin(sort(rep(c(1:10),10))),
subj = as.factor(rep(c(1:10),5)))
Run Code Online (Sandbox Code Playgroud)
我需要为每个subj做一个散点图,不是问题,但是...我想要的是从格子中替换条带并为每个图形添加标签.我设法使用以下代码执行此操作,但我仍然不满意...
xyplot(var ~ temp | subj,
data = mydata,
strip=FALSE,
panel = function(x, y,...) {
panel.xyplot(x, y,...)
panel.text(1,21,labels=which.packet())
})
Run Code Online (Sandbox Code Playgroud)
最后一点......我在哪里堆叠...是如何在每个面板中打印字母而不是数字.我想把面板称为a,b,c ......等等.
任何建议......非常感谢matteo
我有这个功能:
> ?.est <- function(x){
mle.optim <- mle2(paretoNLL,start=list(?=-0.7),data=list(x=x),trace=TRUE)
return(summary(mle.optim)@coef[1,1:4])
}
Run Code Online (Sandbox Code Playgroud)
适合分布并返回参数估计值,std.我的模型的错误,z值和p.我必须将此函数应用于size由因子组合定义的原始数据框的不同子集,pond,habitat,treatment,date为此,我使用ddply函数:
> mle.? <- ddply(size, .(pond,habitat,treatment,date),
summarise, ?=?.est(x=mass.wei))
Run Code Online (Sandbox Code Playgroud)
问题在于,通过这样做,我只能在新数据框中添加一列mle.?,我需要添加到 mle.?四个新列,每个列的输出?.est
基本上是这样的:
> mle.?
pond habitat treatment date estimate std. error z value Pr(z)
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - …Run Code Online (Sandbox Code Playgroud) 我有一个这样的数据框:
df
A B
[1,] 1 4
[2,] 2 3
[3,] 3 5
[4,] 4 7
[5,] 5 5
[6,] 6 7
[7,] 7 4
[8,] 8 7
[9,] 9 3
[10,] 10 7
Run Code Online (Sandbox Code Playgroud)
我需要将B列中的数字加到A列定义的特定区间之间.例如,将A中的数值加到A≥1和A <3之间.
我想用这个:
> sum(which(df$B[df$A>=1] & df$B[df$A<3]))
Run Code Online (Sandbox Code Playgroud)
但它没有给我我想要的东西.
我正在尝试在网格中绘制多个格子图。为此,我使用以下代码:
plot <- xyplot(1:10~1:10)
page.layout <- grid.layout(nrow = 2, ncol = 1,
widths = unit(c(1), "null"),
heights = unit(c(1), "null"),
default.units = "null",
respect = FALSE,
just = "centre")
pushViewport(viewport(layout = page.layout))
pushViewport(viewport(layout.pos.row = 1))
par(mar = c(5, 4, 4, 2))
print(plot, newpage = FALSE)
popViewport()
pushViewport(viewport(layout.pos.row = 2))
par(mar = c(5, 4, 4, 2))
print(plot, newpage = FALSE)
popViewport()
Run Code Online (Sandbox Code Playgroud)
我现在想减少两个图形之间的空间,我在gridBase的小插图中读到,简单的图形控件,例如 par(mar=c())应该可以工作,但这里的情况并非如此。也许我错过了一些明显的东西,但我不明白为什么我无法控制边距参数。有什么建议么?
我想使用晶格来创建多面板散点图,并使用分组因子在每个面板中添加平滑线,这里是一个虚拟数据帧
x <- rep(1:10, 4)
a <- as.factor(rep(1:4, 10))
b <- as.factor(sort(rep(1:2, 20)))
y <- rep(NA, 80)
df <- data.frame(x, y, a, b)
df$y[df$b=="1"] <- df$x[df$b=="1"]+df$x[df$b=="1"]^0.5
df$y[df$b=="2"] <- df$x[df$b=="2"]+df$x[df$b=="2"]^1
df$y[df$b=="3"] <- df$x[df$b=="3"]+df$x[df$b=="3"]^2
for(i in 1:80) df$y[i] <- df$y[i]+rnorm(1, 0, 10)
Run Code Online (Sandbox Code Playgroud)
我试过这个:
library(lattice)
xyplot(y ~ x|a, data = df, groups = b, type = "b",
panel = function(x, y,...){
panel.smooth(x, y, ...)
panel.xyplot(x, y, ...)
})
Run Code Online (Sandbox Code Playgroud)
但似乎没有用,我不明白为什么,肯定是我缺少的东西.但是,我还有另外一个问题,就是我需要更改一些平滑参数(span和degree).我找到了一种方法,通过Chi in Cross Validated在线进行(引用其他用户以这种方式工作是否正确?),即:
my.panel.loess <- function(x, y, span = 2/3, degree = 0.5, ...) …Run Code Online (Sandbox Code Playgroud) 我在这里遇到了一些麻烦,请帮助我.我有这些数据
set.seed(4)
mydata <- data.frame(var = rnorm(100),
temp = rnorm(100),
subj = as.factor(rep(c(1:10),5)),
trt = rep(c("A","B"), 50))
Run Code Online (Sandbox Code Playgroud)
和这个适合他们的模型
lm <- lm(var ~ temp * subj, data = mydata)
Run Code Online (Sandbox Code Playgroud)
我想用格子绘制结果并拟合回归线,用我的模型预测,通过它们.为此,我正在使用这种方法,概述了D. Sarkar的"电力使用的格子技巧"
temp_rng <- range(mydata$temp, finite = TRUE)
grid <- expand.grid(temp = do.breaks(temp_rng, 30),
subj = unique(mydata$subj),
trt = unique(mydata$trt))
model <- cbind(grid, var = predict(lm, newdata = grid))
orig <- mydata[c("var","temp","subj","trt")]
combined <- make.groups(original = orig, model = model)
xyplot(var ~ temp | subj,
data = combined,
groups = …Run Code Online (Sandbox Code Playgroud)