- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在处理一个棘手的问题。假设我有以下数据:
df <- data.frame(matrix(ncol = 0, nrow = 7))
df$x <- factor(c("blue","blue","red","red","green","green","black"))
df$y <- factor(c("A","B","A","C","B","C","A"))
df$z <- c(1998, 1998, 1998, 1998, 1999, 2000, 2001)
我们可以看到 A 和 B 有共同的蓝色,但没有红色或黑色。 A 和 C 有共同的红色,但没有蓝色、绿色或黑色。等等。
我想生成一个矩阵,根据字母 i,j 占据的所有颜色(但不包括任何一个字母未占据的颜色)的联合,对字母 i,j 共有的颜色比例进行评分。换句话说,对角线是字母 i 占据的颜色总数,非对角线是字母 i 与字母 j 对于所有 i,j。
我可以为每一对 A、B 分别做这样的事情:
df.A <- df[df$x %in% unique(df$x[df$y=="A"]),] # number of rows occupied by A
df.B <- df[df$x %in% unique(df$x[df$y=="B"]),] # number of rows occupied by B
length(df.A$y[df.A$y=="B"]) # number of A's rows occupied by B
length(df.A$y[df.A$y=="B"]) / (length(df.A$y[df.A$y=="A"])) # proportion of times B agrees with A; i.e. (B|A) / A
在这个例子中,我们发现A总共占用了三种颜色,B总共占用了两种颜色。其中,A和B只有一个共同点。在 A 占据的所有内容中(n=3,不是整个 n=6 的集合),B 仅重叠一个,比例为 0.333。
在我的实际数据中有数千行和数百个因子水平,因此不可能手动完成所有排列。但是我无法弄清楚如何编写一个函数来执行它,即使经过大量搜索也是如此。我认为必须有一个我忽略的直接解决方案。请帮忙!
更新:感谢@Ian Campbell 和@thelatemail,解决方案很简单:
t(table(df[,1:2])) %*% table(df[,1:2])
或crossprod(table(df$x, df$y))
为了回答我自己的其余问题,我可以简单地通过以下方式获得我想要的比例:
x <- t(table(df[,1:2])) %*% table(df[,1:2])
x / diag(x)
最佳答案
当我可以将线性代数用于某事时,我会喜欢上它。
t(table(df[,1:2])) %*% table(df[,1:2])
y
y A B C
A 3 1 1
B 1 2 1
C 1 1 2
编辑:如@thelatemail 所述,还有一个内置(可能更快)函数:
crossprod(table(df$x, df$y))
A B C
A 3 1 1
B 1 2 1
C 1 1 2
关于r - 得分与 R 共有的因素数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62164518/
The proper divisors of a positive integer, n, are all the positive integers that divide n evenly oth
我有这个命令行 $ sudo find /etc/grub.d | sort | tail -n 1 | xargs sudo cat | wc 我想用一个 sudo 命令执行 $ sudo --so
选项大小策略和拉伸(stretch)因子如何影响小部件的大小? 下图显示了三个不同排列的窗口的预览。对于所有三个窗口 (W1-W3),右侧的小部件是一个 QFrame 小部件,其水平和垂直大小策略设置
每次当我必须重新编码一组变量时,我都会想到 SPSS 重新编码功能。我必须承认这很简单。有一个类似的recode函数在 car包,它可以解决问题,但让我们假设我想用 factor 完成任务. 我有 d
这个问题在这里已经有了答案: Template issue causes linker error (C++) [duplicate] (6 个答案) 关闭 9 年前。 我的问题查了没用所以特地来问
我想使用 Eigen 来计算稀疏矩阵的 cholesky 分解。但是,结果不正确,我找不到原因。我如何获得正确答案? Eigen 中是否实现了特殊例程,利用稀疏矩阵的结构来提高性能(例如,对于下例中的
我正在尝试使 angularjs 应用程序在配置( http://12factor.net/config )方面符合 12 因素。 它应该取决于环境,我不应该看到 development 字样, te
我在我的项目中使用 Soil,我在我的包含目录中添加了 soil,在我的预编译头文件中我包含了“Soil.h”。对于我预编译头中的库,我添加了这个: #pragma comment(lib,"SOIL
在我的 Web 应用程序中,我将所有最终用户的日期信息以 UTC 格式存储在数据库中,在向他们显示之前,只需将 UTC 日期转换为他们选择的时区。 我正在使用此方法将本地时间转换为 UTC 时间(在存
我的申请是 Piwik Server从放置在数百个网站上的跟踪代码接收传入的跟踪数据。当这些跟踪请求进入时,大部分工作负载是每秒向数据库写入数百次。我使用的是带有 JDBC 和 Hibernate 的
我有一个非常简单的 GWT 应用程序,它收集一些数据并在用户单击“提交”时提供确认对话框。我创建了一个 com.google.gwt.user.client.ui.DialogBox,填充它,然后调用
我正在使用 Delphi(2009 年,没关系)和 IBX,并且我正在尝试执行简单的代码: TestSQL.ExecQuery; 在此代码之前,我已检查(也可以在调试器监视中看到)TestSQL.Tr
许多线性代数例程都将常量(例如 alpha 和 beta)作为参数。例如cublas?GEMM执行以下操作: C := alpha*op( A )op( B ) + betaC 假设我将 beta 设
我是一名优秀的程序员,十分优秀!