小编jj9*_*246的帖子

在R中创建双模频率矩阵

我有一个数据框,看起来像这样:

CASENO    Var1   Var2   Resp1   Resp2
1          1      0      1      1
2          0      0      0      0
3          1      1      1      1
4          1      1      0      1
5          1      0      1      0
Run Code Online (Sandbox Code Playgroud)

数据集中有400多个变量.这只是一个例子.我需要在R中创建一个简单的频率矩阵(不包括案例编号),但该table功能不起作用.具体来说,我希望将一部分列交叉制表以创建双模频率矩阵.该表应如下所示:

       Var1    Var2
Resp1    3       1
Resp2    3       2
Run Code Online (Sandbox Code Playgroud)

在Stata中,命令是:

gen var = 1 if Var1==1
replace var= 2 if Var2==1

gen resp = 1 if Resp1==1
replace resp = 2 if Resp2==1

tab var resp
Run Code Online (Sandbox Code Playgroud)

r frequency matrix crosstab stata

5
推荐指数
1
解决办法
231
查看次数

按列总和对相列进行排序,相邻的列相邻

我有一个由二分值组成的数据集.这是一个非常大的数据集,但这是一个例子:

var1 <- c(1, 0, 1, 1, 0)
var2 <- c(1, 1, 1, 1, 1)
var3 <- c(0, 0, 1, 1, 0)
var4 <- c(0, 0, 1, 1, 0)
var5 <- c(1, 1, 0, 0, 0)
dat <- data.frame(var1,var2,var3,var4,var5)
dat <- as.matrix(dat)
Run Code Online (Sandbox Code Playgroud)

我正在尝试将两个命令合并为一个.首先,我想对列进行聚类,以便将相同的列集中在一起.其次,我希望按列总和对列进行排序.我可以做其中一个,但不能两个都做.

因此,输出应如下所示:

var2 var1 var5 var3 var4
   1    1    1    0    0
   1    0    1    0    0
   1    1    0    1    1
   1    1    0    1    1
   1    0    0    0    0
Run Code Online (Sandbox Code Playgroud)

最高列总和不需要位于左侧.

我尝试使用这个命令:

 csums <- dat[,order(colSums(dat,na.rm=TRUE))]
Run Code Online (Sandbox Code Playgroud)

但是这些列不是按相似性聚类的.也许有一种基于相似性的聚类方式,以列总和为条件.

sorting r sum col

3
推荐指数
1
解决办法
108
查看次数

标签 统计

r ×2

col ×1

crosstab ×1

frequency ×1

matrix ×1

sorting ×1

stata ×1

sum ×1