- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个数据集,其中我使用许多变量的均值中心和标准化版本。在我的 r 代码中,我有一个很大的 scale() 函数列表,我为所有变量运行这些函数,但我想知道是否有一种方法可以编写一个简单的函数来优化这个过程。
例如:与其拥有像这样的庞大列表......
df$Z.ROW1 <- scale(df$ROW1, scale=T)
df$Z.ROW2 <- scale(df$ROW2, scale=T)
df$Z.ROW3 <- scale(df$ROW3, scale=T)
.....
有没有一种方法可以编写一个函数来创建新的向量,并根据我指定要标准化的变量将它们附加到数据框的末尾?
我找到了这个 example在线:
set.seed(212)
df = matrix(rnorm(15), 5, 5))
colnames(df) <- c("ROW1", "ROW2", "ROW3", "ROW4", "ROW5")
df
ROW1 ROW2 ROW3 ROW4 ROW5
[1,] -0.2391731 0.1544909 0.1503488 -0.2391731 0.1544909
[2,] 0.6769356 1.0368712 0.5096765 0.6769356 1.0368712
[3,] -2.4403360 -0.7796077 -0.7733148 -2.4403360 -0.7796077
[4,] 1.2408845 0.6212641 1.8756660 1.2408845 0.6212641
[5,] -0.3265144 0.2994313 0.7883057 -0.3265144 0.2994313
center.scale <- function(z) {
scale(z, scale = T)
}
center.scale(df[,c("ROW1", "ROW2")])
ROW1 ROW2
[1,] -0.01534097 -0.1657064
[2,] 0.63734894 1.1398052
[3,] -1.58357932 -1.5477370
[4,] 1.03913941 0.5249004
[5,] -0.07756806 0.0487378
这很接近,但它并没有解决创建新向量并将它们附加到我现有数据集末尾的问题。理想情况下,我希望这样我唯一需要更改的就是 center.scale() 函数中的变量名称。谢谢!
最佳答案
这是一个不对 scale
选项进行硬编码的版本,它允许您选择原始列的子集。它返回一个 data.frame
,因为它在更多情况下很有用,但如果您愿意,您可以轻松修改它以返回一个 matrix
。
add_scaled <- function(data, vars = colnames(data), ...) {
data.frame(data,
setNames(data.frame(scale(data[, vars, drop = FALSE],
...)),
paste("Z", vars, sep = ".")))
}
默认情况下,它返回一个 data.frame
,所有列都经过标准化和附加。
df = matrix(rnorm(15), 5, 3)
colnames(df) <- paste0("Col", 1:ncol(df))
df
## Col1 Col2 Col3
## [1,] 1.9659082 -1.2254071 0.1477912
## [2,] 0.2666273 -0.9123931 1.4747579
## [3,] 1.0813351 2.4138457 -1.5569830
## [4,] 0.9618084 1.3076966 -0.8646893
## [5,] -2.0246095 0.3043559 -1.3617747
add_scaled(df)
## Col1 Col2 Col3 Z.Col1 Z.Col2 Z.Col3
## 1 1.9659082 -1.2254071 0.1477912 1.0040228 -1.05411792 0.4625295
## 2 0.2666273 -0.9123931 1.4747579 -0.1216110 -0.84828629 1.5207917
## 3 1.0813351 2.4138457 -1.5569830 0.4180659 1.33898111 -0.8970361
## 4 0.9618084 1.3076966 -0.8646893 0.3388893 0.61159985 -0.3449285
## 5 -2.0246095 0.3043559 -1.3617747 -1.6393669 -0.04817676 -0.7413566
如果只有一些列需要标准化,您可以选择它们。
add_scaled(df, vars = c("Col1", "Col3"))
## Col1 Col2 Col3 Z.Col1 Z.Col3
## 1 1.9659082 -1.2254071 0.1477912 1.0040228 0.4625295
## 2 0.2666273 -0.9123931 1.4747579 -0.1216110 1.5207917
## 3 1.0813351 2.4138457 -1.5569830 0.4180659 -0.8970361
## 4 0.9618084 1.3076966 -0.8646893 0.3388893 -0.3449285
## 5 -2.0246095 0.3043559 -1.3617747 -1.6393669 -0.7413566
最后,您可以将参数传递给 scale
,这样您就不会失去任何灵 active 。
add_scaled(df, vars = "Col1", center = FALSE, scale = TRUE)
## Col1 Col2 Col3 Z.Col1
## 1 1.9659082 -1.2254071 0.1477912 1.2353890
## 2 0.2666273 -0.9123931 1.4747579 0.1675502
## 3 1.0813351 2.4138457 -1.5569830 0.6795177
## 4 0.9618084 1.3076966 -0.8646893 0.6044064
## 5 -2.0246095 0.3043559 -1.3617747 -1.2722773
add_scaled(df, vars = "Col1", center = TRUE, scale = FALSE)
## Col1 Col2 Col3 Z.Col1
## 1 1.9659082 -1.2254071 0.1477912 1.5156943
## 2 0.2666273 -0.9123931 1.4747579 -0.1835866
## 3 1.0813351 2.4138457 -1.5569830 0.6311212
## 4 0.9618084 1.3076966 -0.8646893 0.5115945
## 5 -2.0246095 0.3043559 -1.3617747 -2.4748234
关于r - 创建标准化多个变量并创建新列的 r 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48815209/
某人在 Silverlight posted MVVM 目前缺乏标准化,所以每个人都有自己的风格.. 这就是为什么我和 WPF Disciples 的一些人正在积极讨论每个人都同意的 MVVM 元素。
我有以下数据集: dat tests2 * 20 Score 1 13.333333 2 10.666667 3 2.666667 4 9.333333 5 13.3333
我有一个 double 组,表示某些事件发生的概率,[25,25,25,10,15] 表示事件 A,B..E。这些数字加起来是 100。 通过我的分析,我希望能够排除某个事件发生或不发生的可能性。 所
USPS webtools 很贵,而且 Google Maps 没有某些地址。有没有免费或开源的解决方案? 最佳答案 根据您的业务性质,或者如果您是非营利或教育机构,有一家在线提供商可为您提供 fre
我有一个 json 对象,里面有对象例如 user: {"name": "tim"} 并希望有一种方法将其转换为 "user.name": 'tim' 我已经尝试过:Javascript Recurs
我有一个名为 spam 的数据集,其中包含与垃圾邮件相关的 58 列和大约 3500 行数据。 我计划将来对此数据集运行一些线性回归,但我想事先进行一些预处理并将列标准化为均值和单位方差为零。 我被告
我试图找到一种方法来强调音频中高点和低点之间的差异。我似乎找不到有关如何执行此操作的文档-也许可以使用ffmpeg完成。非常感谢来自对信号处理了解更多的人的一些指导。 最佳答案 从根本上讲,膨胀器与压
如何缩放/规范化每行数据(观察)?像 [-1:1] 这样的 z 分数? 我看过之前的帖子,其中涉及整个数据集的标准化,如下所示 https://stats.stackexchange.com/ques
例如: http://www.google.co.uk www.google.co.uk google.co.uk 将全部转换为: google.co.uk 我本来想使用 System.Uri 类,但
我可以使用此代码从 json 文件导入数据... import requests from pandas.io.json import json_normalize url = "https://da
规范化 Prolog 原子中空白字符(空格、换行符、制表符)的最佳方法是什么,例如在 SWI-Prolog 中。IE。我想要一个规则: normalize_space_in_atom(+Atom1,
如何缩放/规范化每行数据(观察)?像 [-1:1] 这样的 z 分数? 我看过之前的帖子,其中涉及整个数据集的标准化,如下所示 https://stats.stackexchange.com/ques
我正在尝试阅读代码片段,但它对我来说没有任何意义。请帮助我 /** * To make it easy to query for the exact date, we normalize all
我是一名研究人员,拥有大约 17,000 份自由文本文档,其中大约 30-40% 与我的结果相关。是否有一个开源工具可以用来确定与结果相关的最常见的单词(甚至短语,但不是必需的),并对已经出现的单词的
我正在尝试使用 L2 范数(单位长度)对 numpy 矩阵的行进行标准化。 当我这样做时,我发现了一个问题。 假设我的矩阵“b”如下: 现在,当我对第一行进行标准化时,如下所示,它工作正常。 但是当我
我有一个 3 列数组。数组的第一列的值介于 1 和 10 之间。我需要提取第一列为 1 的所有行,并规范化该数组切片的第三列。然后对第一列等于 2 等的所有行重复相同的操作。 如果我运行此代码,它会使
如果我通过许多不同的文件/脚本使用这个结构当需要更改时,如何才能只更改一个地方,而不必在每个文件中更改它。 u = contents incomingUrl = urlparse(u).query o
我有 1MB 的文本文件。我想删除空格、换行符、制表符,并以 4KB 迭代方式将 1MB 文件的字符大小写从小写转换为大写。 我写了这段代码: for (i = 0, j= 0; i 首先,让我们定
这实际上是一个机器学习分类问题,但我想有一种非常好的快速而肮脏的方法来做到这一点。我想将描述 NFL 球队的字符串(例如“San Francisco”或“49ers”或“San Francisco 4
我正在创建游戏评论数据库。我对此很陌生,但我正在尽力。关于数据库的一点点:系统很简单,用户填写 php 表单,在其中插入他的姓名、电子邮件,然后选择反馈是好还是坏并留下评论/建议。我正在添加照片的视觉
我是一名优秀的程序员,十分优秀!