【发布时间】:2021-07-09 11:20:13
【问题描述】:
我有一个看起来像这样的数据,
df <- data.frame(col1=c(0,0,20,20),col2=c(12,20,12,20), fill=c(0,1,1,1))
col1 col2 fill
1 0 12 0
2 0 20 1
3 20 12 1
4 20 20 1
交互矩阵:Col1 与 Col2,基于 fill=="0"
我的动机是创建一个二分图,我需要 col1 和 col2 之间类型的交互。因此,当 0 与 12 相遇时,遇到 0 的概率是 0.50。当 0 遇到 20 时,遇到零的概率为 0 等。我需要将 col1 的唯一元素和 Col2 的唯一元素作为行
0 20
12 0.50 0
20 0 0
非常感谢任何帮助
更新______
如果我使用以下函数,那么我会得到填充 = 0 的所需结果。但是我还不能对 b 表进行子集化以获取我想要的结果,并且我无法使用 dplyr 创建与我想要的相同的结果
df %>%
table() %>%
prop.table(.,1)
, , fill = 0
col2
col1 12 20
0 0.5 0.0
20 0.0 0.0
, , fill = 1
col2
col1 12 20
0 0.0 0.5
20 0.5 0.5
【问题讨论】:
-
您可以使用
df %>% group_by(col1) %>% summarise(val = mean(fill == 0))。虽然我不确定行名中的 12 和 20 与输出有何关系。 -
你是对的 Ronak。那是我的坏我需要。我应该解释得更好。我想创建一个二分图,我需要类型的交互。因此,当 0 与 12 相遇时,遇到 0 的概率是 0.50。当0遇到20时,遇到零的概率是0
-
是的,但是行名 12 和 20 在输出中如何相关。
col1 = 0只有 1 个值,其中col2 = 12。我上面的评论对你有用吗? -
我明白你的意思。我会尝试更好地澄清。例如,如果我使用这些函数
a=table(df) prop.table(a, 1)在表 1 中,其中 fill=0,我看到了我想要的但我需要转置表。我很难用 dplyr 生成这个 -
“所以,当 0 me[e]ts 12 遇到零的概率是 0.50。当 0 遇到 20 遇到零的概率是 0 等等”背后的逻辑尚不清楚。