- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否有一种 Eloquent 方法来使用 ddply()
不仅获得定义的最细粒度组的输出,还获得那些子组的输出?
换句话说,当其中一个分类器是“任何”或“任一”或“无关紧要”时。在两个分组变量的简单情况下,这可以通过单独调用 ddply
来完成;然而,当有三个或更多分类器都可以设置为“任何”时,由于必须为“任何”+其他的每个新组合一遍又一遍地运行 ddply
,这会变得困惑。
可重现的例子:
require(plyr)
## create a data frame with three classification variables
## and two numeric variables:
df1=data.frame(classifier1 = LETTERS[sample(2,200,replace=T)],
classifier2 = letters[sample(3,200,replace=T)],
classifier3 = rep(c("foo","bar"),100),
VAR1 = runif(200,50,250),
VAR2 = rnorm(200,85,20))
## apply an arbitrary function to subsets of df1; that is, all unique
## combinations of the three classifiers.
dlply(df1, .(classifier1,classifier2,classifier3),
function(df) lm(VAR1 ~ VAR2, data=df))
$A.a.bar
Call:
lm(formula = VAR1 ~ VAR2, data = df)
Coefficients:
(Intercept) VAR2
230.5555 -0.8591
$A.a.foo
Call:
lm(formula = VAR1 ~ VAR2, data = df)
Coefficients:
(Intercept) VAR2
128.3078 0.3631
...
现在,如果我想在不包括任何/所有分类器的情况下为更多组获得相同的输出怎么办?例如,如果我想包含 when classifier1="any",我将只在 dlply
语句中包含 classifier2 和 classifier3,如下所示:
dlply(df1, .(classifier2,classifier3), function(df) lm(VAR1 ~ VAR2, data=df))
如果我想在 classifier2 和 classifier3="any"时获得输出,我会再次从 ddply
调用中删除并且只包含 classifier1:
dlply(df1, .(classifier1), function(df) lm(VAR1 ~ VAR2, data=df))
但是,当我的分类器多于三个时,这会变得很笨拙,并且可以取出每个分类器(即 =“任意”)——组合的数量会大大增加。是否有一种 Eloquent /快速的方法来获取我数据的所有“组组”的输出?
最佳答案
一种方法是创建组合列表,然后使用 Map
创建每个 dlply
调用的结果列表
您可以将 combn
与 lapply
和 do.call('c',...)
结合使用来创建一个列表1,2, ...,n 个变量的所有组合
xx <- do.call('c',lapply(1:3, function(m) {
combn(x=names(df1)[1:3],m, simplify = FALSE)}))
然后您可以在调用 Map
时使用它(它是 mapply(..., SIMPLIFY = FALSE)
的包装器
results <- Map(f = function(x){dlply(df1,.var=x, .fun = lm, formula = VAR1 ~ VAR2)},xx)
或者您可以将一个函数传递给 combn
-- 这将做同样的事情
results <- do.call('c',lapply(1:3, function(m) {
combn(x=names(df1)[1:3],m, simplify = FALSE,
function(vv) {dlply(df1,.var=vv, .fun = lm, formula = VAR1~VAR2)})
}))
关于r - plyr 嵌套组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15606293/
是否有一种 Eloquent 方法来使用 ddply() 不仅获得定义的最细粒度组的输出,还获得那些子组的输出? 换句话说,当其中一个分类器是“任何”或“任一”或“无关紧要”时。在两个分组变量的简单情
我正在尝试使用 plyr 计算滚动平均值。数据是行业国家年的数据,对每个行业国家都有重复观察。数据不平衡,但大多数工业国家有大约 15 个观测值。 例如数据如下所示: country IS
我想使用 ddply 函数将相同的函数写入多个列,但我尝试将它们写在一行中,想看看有没有更好的方法来做到这一点? 这是数据的简单版本: data<-data.frame(TYPE=as.integer
我将如何使用 plyr 复制此内容? with(mtcars, tapply(mpg, cyl, summary)) 以同样的优雅,即不详细说明个人统计数据? 最佳答案 library(plyr) d
我有以下数据集(CEU): group x y 1 -23 100 1 -0.90 69.62 1 -0.90 72.03 2 -23
我正在尝试学习如何在 R/plyr 中编写函数。我知道有更简单的方法可以完成我在下面展示的内容,但这不是重点。 在下面的示例中,PLYR 不会向我的新数据框返回新变量 library(plyr) hi
我有一个这样的数据框: mat.in=data.frame(site=c('A','A','A','B','B','B'), var=c('product.A','product.B'
作为学习 plyr 的练习,我尝试对 Rob Hyndman 最近发布的一篇文章做一个 plyr 版本: library(forecast); library(plyr) # Hyndman, R.
我想在一个图上绘制多个时间序列。目前我可以单独绘制它们但不能一起绘制。我怎样才能加入数据,因为年份是按小数分割的。 我基本上想要结束的是这个 Plotting multiple time-series
有没有办法将变量的值分配给 plyr 中的结果列名? 所以在这段代码中... column_name column_names df > # temporal variable > for (c
我是 plyr(和 R)的新手,正在寻找一些帮助来开始。以棒球数据集为例,我如何计算联赛和球队(lg 和球队)“击球数”的同比(yoy)变化? library(plyr) df1 <- aggrega
我使用了plyr 包提供的strip_splits(df) 函数来获取数据框列表。我现在想将数据框列表连接在一起,并添加回用于拆分它们的变量。下面突出显示的文档使我相信这应该是可能的,但是我找不到合适
我正在尝试将一个函数 (weight.func) 传递给另一个调用 ddply 的函数(包装器)。我希望 ddply 使用该函数 (weight.func) 作为其计算的一部分。当 weight.fu
我有一个非常大的数据框,我需要在两列上连接到另一个数据框。我一直在使用 merge 来完成 ir,但 R 内存不足,表越大。是否有使用 dplyr 或 plyr 的类似解决方案?我听说他们需要更少的内
我想为某些数据组合生成相同类型的图表。目前,我正在使用 plyr 来拆分数据并为每个组合执行一些代码。 例如,假设 dataframe 包含公司、部门、地区和收入。这是我的伪代码: d_pl
我喜欢 plyr 将数据帧拆分为多个数据集,然后对每个数据集执行相同操作的能力。最好的部分是当它以整洁紧凑且标记良好的表格的形式向您显示结果时。我喜欢使用 each() 将一堆计算放入一行中。但是,我
基本上我想要一个基于我的群组的自动增量 id 列 - 在这种情况下。(高棉语,剪切) > myDataFrame size kmer cvCut cumsum 1
我无法理解 plyr 包的用法。我尝试使用它来拆分存储在列表中的数据帧,应用函数,将结果存储为数据帧并将数据帧再次组合为列表。 因此,鉴于以下数据: #create test dfs
我以为我有一个非常简单的数据帧转换,但出于某种原因我无法理解它似乎需要永恒,这让我怀疑它可能没有按照我的希望进行。任何人都可以解释一下吗? 第 1 部分 - 将源数据转换为单独的列(实际 df 有 2
我遇到了一个非常不同的问题,在 fullscreen我的模式plyrjs没有向 fullscreen 播放视频 我试图重现 问题 中的代码相同密码笔 但它适用于 密码笔 为什么?。 问题:为什么相同的
我是一名优秀的程序员,十分优秀!