【发布时间】:2019-09-05 15:36:05
【问题描述】:
我有一个像这样的非常大的数据框 假设我们在数据框中只有 8 个人,如下面的 R 代码所示
注意 'df' 中的每一行代表一个人
football <- c(1,1,1,1,0,0,0,0)
basketball <- c(1,1,0,0,0,0,0,1)
other <- c(1,0,0,0,0,0,0,0)
df<- data.frame(football, basketball, other)
我正在尝试使用足球(或数据框中的任何其他变量)作为“参考”来获得一张这样的表格
mytable <- matrix (c(1, 0.5, 0.25 ,0.66, 1, 0.33, 1, 1, 1), byrow=T, ncol=3)
colnames(mytable) <- c("football","basketball","other")
rownames(mytable) <- c("football","basketball","other")
在这种情况下,
8 人中有 4 人踢足球: 踢足球的 4 人中有 4 人踢足球 (100%),4 人中有 2 人踢足球 (50%),4 人中有 1 人踢其他运动 (25%)。
8 个人中有 3 个人打篮球: 三分之二的篮球运动员也踢足球(66%),三分之三的篮球运动员打篮球(100%),三分之一的篮球运动员也参加其他运动(33%)
8 人中有 1 人从事其他运动: 1 人中的 1 人还踢足球 (100%),1 人中的 1 人打篮球 (100%),1 人中的 1 人玩其他 (100%),
另外,有没有办法像这样绘制表格(如果这个问题没有得到回答也没关系,但我们将不胜感激)
【问题讨论】:
-
试试
prop.table(tcrossprod(table(rep(names(df), each = nrow(df)), unlist(df)))) -
感谢您的评论。但是代码没有返回我想要的输出,我不确定输出代表什么(例如,足球在所有变量中返回为 0.1,其他值在 0.1 和 0.16 之间)
标签: r