给出一个长度为6的3个唯一数字的数组,例如:

C(1,1,1,2,3,3)

如何构建以下6x3矩阵:

[1, 0 , 0]  
[1, 0 , 0]  
[1, 0 , 0]  
[0, 1 , 0]  
[0, 0, 1]  
[0, 0, 1]

一种天真的方式是:

V = C(1,1,1,2,3,3)
Z = matrix(0,6,3)
for (i in 1:6) {Z[i, V[i]] = 1}

但是有没有适合这种类型的班轮呢?

推荐答案

我们可以在base R中使用model.matrix

model.matrix(~ . - 1, 数据.frame(v1 = factor(v1)))

-输出

   v11 v12 v13
1   1   0   0
2   1   0   0
3   1   0   0
4   0   1   0
5   0   0   1
6   0   0   1

或使用fastDummies中的dummy_cols

library(fastDummies)
dummy_cols(v1)[-1]
  .数据_1 .数据_2 .数据_3
1       1       0       0
2       1       0       0
3       1       0       0
4       0       1       0
5       0       0       1
6       0       0       1

数据

v1 <- c(1,1,1,2,3,3)

R相关问答推荐

在Julia中调用R函数

R:如何自动化变量创建过程,其中我需要基于ifelse()为现有变量的每个级别创建一个单独的变量

如何将具有重复名称的收件箱合并到R中的另一列中,而结果不同?

R等效于LABpascal(n,1)不同的列符号

将数据集中的值增加到当前包含的最大值

在R中为马赛克图中的每个字段着色

IMF IFS数据以R表示

提取第一个下划线和最后一个下划线之间的任何内容,例外情况除外

矩阵的堆叠条形图,条形图上有数字作为标签

如何在R forestplot中为多条垂直线分配唯一的 colored颜色 ?

如何将R中数据帧中的任何Nas替换为最后4个值

SHINY:使用JS函数应用的CSS样式显示HTML表格

如何将SAS数据集的列名和列标签同时包含在r中GT表的表首?

R如何计算现有行的总和以添加新的数据行

查找所有站点的最小值

如何将一列中的值拆分到R中各自的列中

按组内中位数分类

R代码,用于在线条图下显示观测表

删除数据帧中特定行号之间的每第三行和第四行

`-`是否也用于数据帧,有时使用引用调用?