如何在R中创建具有多个列的频率表?
我正在尝试制作一个包含多列的频率表。 我的数据是如何在R中创建具有多个列的频率表?,r,multiple-columns,frequency,contingency,R,Multiple Columns,Frequency,Contingency,我正在尝试制作一个包含多列的频率表。 我的数据是 C = as.factor(sample( LETTERS[1:2], 100, replace = TRUE, prob = c(rep(1/2, 2)))) R1 = sample(c(-1, 1), 100, replace = TRUE) R2 = sample(c(-1, 1), 100, replace = TRUE) R3 = sample(c(-1, 1), 100, replace = TRUE) data = data.fra
C = as.factor(sample( LETTERS[1:2], 100, replace = TRUE, prob = c(rep(1/2, 2))))
R1 = sample(c(-1, 1), 100, replace = TRUE)
R2 = sample(c(-1, 1), 100, replace = TRUE)
R3 = sample(c(-1, 1), 100, replace = TRUE)
data = data.frame(R1, R2, R3, C)
rowb = expand.grid(data.frame(r1 = c(-1, 1), r2 = c(-1, 1), r3 = c(-1, 1)))
我的目标频率表是行包含行B的组合,列是C。
此时,R1、R2和R3与行匹配。
如果未找到匹配项,则元素的值为零
我附上了目标频率表的结构
根据您提供的图像,似乎您只想创建一个新的变量,将R1-3连接起来,然后用C将其制表;您可以使用粘贴:
根据您提供的图像,似乎您只想创建一个新的变量,将R1-3连接起来,然后用C将其制表;您可以使用粘贴: 我们可以使用data.table中的dcast并与“rowb”连接
library(data.table)
dcast(setDT(data), R1+R2+R3~C, length)[rowb, on = .(R1=r1, R2 = r2, R3 = r3)]
或者先执行join,然后执行dcast
我们可以使用data.table中的dcast并与“rowb”连接
library(data.table)
dcast(setDT(data), R1+R2+R3~C, length)[rowb, on = .(R1=r1, R2 = r2, R3 = r3)]
或者先执行join,然后执行dcast
不清楚您的预期输出是什么?图中所示的“A”和“B”可能是librarydata.table;dcastsetDTdata,R1+R2+R3~C,长度谢谢你,akrun!我的问题有点不准确…不清楚您的预期输出是什么?图中所示的“A”和“B”可能是librarydata.table;dcastsetDTdata,R1+R2+R3~C,长度谢谢你,akrun!我的问题有点不准确。。。
library(data.table)
dcast(setDT(data), R1+R2+R3~C, length)[rowb, on = .(R1=r1, R2 = r2, R3 = r3)]
dcast(setDT(data)[rowb , on = .(R1=r1, R2 = r2, R3 = r3)], ...~C)