小编mat*_*teo的帖子

在相等长度的区间中划分一系列值:cut vs cut2

我正在使用cut函数将我的数据拆分为相同的bin,它可以完成工作,但我对它返回值的方式不满意.我需要的是箱子的中心而不是上端和下端.
我也尝试过使用cut2{Hmisc},这给了我每个箱子的中心,但是它在包含相同数量的观察的箱子中划分数据范围,而不是长度相同.

有人有解决方案吗?

r hmisc

13
推荐指数
2
解决办法
2万
查看次数

如何使用ddply将列添加到数据框?

我有一个如下所示的数据框:

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为此数据框的列,其中包含计算加权平均值所需的加权因子.该加权因子必须被导出的每个组合sitedate.

我正在使用的方法是首先构建一个计算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)

r plyr

11
推荐指数
1
解决办法
9819
查看次数

如何在格子中标记面板

这是一个简单的问题,肯定你已经遇到过,但是让我头疼不已......

我有这样的数据帧:

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

r lattice

9
推荐指数
1
解决办法
1万
查看次数

使用ddply在新数据帧中强制输出多个输出

我有这个功能:

> ?.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)

r plyr

5
推荐指数
1
解决办法
1392
查看次数

在另一列定义的间隔之间的列中汇总对象

我有一个这样的数据框:

  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)

但它没有给我我想要的东西.

r

4
推荐指数
1
解决办法
7213
查看次数

控制 grid.layout 中的内部图形边距

我正在尝试在网格中绘制多个格子图。为此,我使用以下代码:

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())应该可以工作,但这里的情况并非如此。也许我错过了一些明显的东西,但我不明白为什么我无法控制边距参数。有什么建议么?

r lattice

4
推荐指数
1
解决办法
4454
查看次数

多面体平滑,格子中的分组因子

我想使用晶格来创建多面板散点图,并使用分组因子在每个面板中添加平滑线,这里是一个虚拟数据帧

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)

r smoothing lattice

4
推荐指数
1
解决办法
2660
查看次数

用格子绘制回归线

我在这里遇到了一些麻烦,请帮助我.我有这些数据

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)

r lattice

3
推荐指数
1
解决办法
8054
查看次数

标签 统计

r ×8

lattice ×4

plyr ×2

hmisc ×1

smoothing ×1