Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在R中创建具有多个列的频率表?_R_Multiple Columns_Frequency_Contingency - Fatal编程技术网

如何在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)