- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我收到未知数据,我想以编程方式查看相关性,并将所有完全相关的变量组合在一起(忽略方向)。在下面的数据集中,我可以手动查看相关性并说 a, f, g, h
一起去吧b, d, e
.我怎样才能以编程方式有效地做到这一点。
library(dplyr)
dat <- data_frame(
a = 1:100,
b = rnorm(100),
c = sample(1:100),
d = b * 3,
e = b + 100,
f = 1001:1100,
g = a - 100,
h = 100:1
)
round(cor(dat), 3)
## a b c d e f g h
## a 1.000 0.053 -0.042 0.053 0.053 1.000 1.000 -1.000
## b 0.053 1.000 0.092 1.000 1.000 0.053 0.053 -0.053
## c -0.042 0.092 1.000 0.092 0.092 -0.042 -0.042 0.042
## d 0.053 1.000 0.092 1.000 1.000 0.053 0.053 -0.053
## e 0.053 1.000 0.092 1.000 1.000 0.053 0.053 -0.053
## f 1.000 0.053 -0.042 0.053 0.053 1.000 1.000 -1.000
## g 1.000 0.053 -0.042 0.053 0.053 1.000 1.000 -1.000
## h -1.000 -0.053 0.042 -0.053 -0.053 -1.000 -1.000 1.000
list(
c('a', 'f', 'g', 'h'),
c('b', 'd', 'e')
)
最佳答案
这个怎么样:
# Save absolute correlation mtx
cmat <- abs(cor(dat))
# Step over the rows of the matrix and select the column names that have correlation 1
groups <- lapply(rownames(cmat), function(rname) { colnames(cmat)[cmat[rname, ]==1] })
# Choose only unique correlation groups
groups <- unique(groups)
## [[1]]
## [1] "a" "f" "g" "h"
## [[2]]
## [1] "b" "d" "e"
## [[3]]
## [1] "c"
library(dplyr)
dat <- data_frame(
a = 1:100000,
b = rnorm(100000),
c = sample(1:100000),
d = b * 3,
e = b + 100000,
f = 1001:101000,
g = a - 100,
h = 100000:1,
i = runif(100000),
j = rev(i),
k = i * 3
)
cor_group_dplyr <- function(dat){
grps <- data.frame(abs(round(cor(dat), 3))) %>%
dplyr::add_rownames() %>%
tidyr::gather(key, value, -rowname) %>%
dplyr::filter(value == 1) %>%
dplyr::distinct(rowname) %>%
dplyr::group_by(key) %>%
dplyr::summarise(pairs = list(rowname)) %>%
{.[["pairs"]]} %>%
{.[sapply(., length) > 1]}
if (length(grps) == 0) return(NA)
grps
}
cor_group_data.table <- function(dat){
res <- data.table::data.table(do.call(paste, data.table::as.data.table(abs(round(cor(dat), 3)))), colnames(dat))
groups <- res[, .(res = list(V2)), by = V1][["res"]]
m <- groups[sapply(groups, length) > 1]
if (length(m) == 0) return(NA)
m
}
cor_group_base <- function(dat){
cmat <- abs(round(cor(dat), 4))
groups <- lapply(rownames(cmat), function(rname) { colnames(cmat)[cmat[rname, ]==1] })
groups <- unique(groups)
m <- groups[sapply(groups, length) > 1]
if (length(m) == 0) return(NA)
m
}
library(microbenchmark)
(op <- microbenchmark(
cor_group_base(dat),
cor_group_dplyr(dat),
cor_group_data.table(dat),
times=100L))
## Unit: milliseconds
## expr min lq mean median uq max neval
## cor_group_base(dat) 50.83729 52.53670 60.93529 56.65787 58.27536 143.1478 100
## cor_group_dplyr(dat) 54.25574 55.67910 69.32940 60.76432 64.94523 182.8525 100
## cor_group_data.table(dat) 53.10673 56.36881 62.42772 58.94608 60.06950 158.2749 100
关于r - 确定和分组完全相关的变量(有效地),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32993097/
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: How to nest OR statements in JavaScript? 有没有办法做到这一点:
在 JavaScript 中有没有办法让一个变量总是等于一个变量?喜欢var1 = var2但是当var2更新,也是var1 . 例子 var var1 = document.getElementBy
我正在努力理解这代表什么 var1 = var2 == var3 我的猜测是这等同于: if (var2 == var3): var1 = var2 最佳答案 赋值 var1 = var2
这个问题已经有答案了: What does the PHP error message "Notice: Use of undefined constant" mean? (2 个回答) 已关闭 8
我在临时表中有几条记录,我想从每条记录中获取一个值并将其添加到一个变量中,例如 color | caption -------------------------------- re
如何将字符串转为变量(字符串变量--> $variable)? 或者用逗号分隔的变量列表然后转换为实际变量。 我有 2 个文件: 列名文件 行文件 我需要根据字符串匹配行文件中的整行,并根据列名文件命
我有一个我无法解决的基本 php 问题,我也想了解为什么! $upperValueCB = 10; $passNodeMatrixSource = 'CB'; $topValue= '$uppe
这可能吗? php $variable = $variable1 || $variable2? 如果 $variable1 为空则使用 $variable2 是否存在类似的东西? 最佳答案 PHP 5
在 Perl 5.20 中,for 循环似乎能够修改模块作用域的变量,但不能修改父作用域中的词法变量。 #!/usr/bin/env perl use strict; use warnings; ou
为什么这不起作用: var variable; variable = variable.concat(variable2); $('#lunk').append(variable) 我无法弄清楚这一点
根据我的理解,在32位机器上,指针的sizeof是32位(4字节),而在64位机器上,它是8字节。无论它们指向什么数据类型,它们都有固定的大小。我的计算机在 64 位上运行,但是当我打印包含 * 的大
例如: int a = 10; a += 1.5; 这运行得很完美,但是 a = a+1.5; 此作业表示类型不匹配:无法从 double 转换为 int。所以我的问题是:+= 运算符 和= 运算符
您好,我写了这个 MySQL 存储过程,但我一直收到这个语法错误 #1064 - You have an error in your SQL syntax; check the manual that
我试图在我的场景中显示特定的奖牌,这取决于你的高分是基于关卡的目标。 // Get Medal Colour if levelHighscore goalScore { sc
我必须维护相当古老的 Visual C++ 源代码的大型代码库。我发现代码如下: bIsOk = !!m_ptr->isOpen(some Parameters) bIsOk的数据类型是bool,is
我有一个从 MySQL 数据库中提取的动态产品列表。在 list 上有一个立即联系 按钮,我正在使用一个 jquery Modal 脚本,它会弹出一个表单。 我的问题是尝试将产品信息变量传递给该弹出窗
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: What is the difference between (type)value and type(va
jQuery Core Style Guidelines建议两种不同的方法来检查变量是否已定义。 全局变量:typeof variable === "undefined" 局部变量:variable
这个问题已经有答案了: 已关闭11 年前。 Possible Duplicate: “Variable” Variables in Javascript? 我想肯定有一种方法可以在 JavaScrip
在语句中使用多重赋值有什么优点或缺点吗?在简单的例子中 var1 = var2 = true; 赋值是从右到左的(我相信 C# 中的所有赋值都是如此,而且可能是 Java,尽管我没有检查后者)。但是,
我是一名优秀的程序员,十分优秀!