作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想贬低 R data.frame
中的多个列。使用 this question 中的示例
set.seed(999)
library(plyr)
library(plm)
# random data.frame
dat <- expand.grid(id=factor(1:3), cluster=factor(1:6))
dat <- cbind(dat, x=runif(18), y=runif(18, 2, 5))
#demean x and y
dat.2 <- ddply(dat, .(cluster), transform, x=x-mean(x), y=y-mean(y))
我的问题是我有(很多)超过 2 个变量,我想避免对此分析进行硬编码。总的来说,我是 plyr
的新手;为什么会这样
dat.2 <- ddply(dat[,c(x,y)], .(cluster), transform, function(x) x - mean(x))
不工作?我是否遗漏了一些关键步骤?一般来说有更好的方法吗?
最佳答案
看看 colwise
仿函数。唯一需要注意的是 id
列。因此:
demean <- colwise(function(x) if(is.numeric(x)) x - mean(x) else x)
dat.2 <- ddply(dat, .(cluster), demean)
编辑:正如您所发现的,甚至还有一个 numcolwise
仿函数仅用于处理数字,因此您可以执行以下操作:
demean <- numcolwise(function(x) x - mean(x))
dat.2 <- ddply(dat, .(cluster), demean)
您还可以使用 scale
函数而不是定义自己的函数:
dat.2 <- ddply(dat, .(cluster), numcolwise(scale, scale = FALSE))
关于r - Demean R 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23900674/
是否有一种简单的方法可以按列贬低稀疏矩阵,同时将零值视为缺失(使用 Matrix 包)? 我似乎遇到两个问题: 找到合适的列意味着 空单元格被视为零而不是缺失: M0 或者@user20650评论
我想贬低 R data.frame 中的多个列。使用 this question 中的示例 set.seed(999) library(plyr) library(plm) # random data
我是一名优秀的程序员,十分优秀!