r - 将向量转换为 data.frame,每个唯一值对应一列

标签 r vector matrix indexing dataframe

我们得到一个向量,如下所示:

x <- c(1,2,1,5,2,1,2,5,1)

我们需要的是一个data.frame say y,行数等于length(x),列数等于length(unique(x)),这意味着 x 中每个唯一项目一列,这样 y[i,j]==TRUE当且仅当 x 的第 i 元素是 x 的第 j 个唯一项(分配给列j):

y <- data.frame("1"=x==1, "2"=x==2, "5"=x==5, check.names=F)

执行此操作的简单方法是:

y <- setNames(data.frame(sapply(unique(x), function(i) x==i)), unique(x))

您有更好的主意(即特定功能)吗?

最佳答案

如果您可以接受二进制表示而不是数据的逻辑表示,我会只使用table:

y <- table(seq_along(x), x)

要获取 data.frame,请使用 as.data.frame.matrix:

as.data.frame.matrix(y)
#   1 2 5
# 1 1 0 0
# 2 0 1 0
# 3 1 0 0
# 4 0 0 1
# 5 0 1 0
# 6 1 0 0
# 7 0 1 0
# 8 0 0 1
# 9 1 0 0

关于r - 将向量转换为 data.frame,每个唯一值对应一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20373994/

相关文章:

c++ - 显示 vector 的迭代器

c++ - 从 Homography 矩阵计算比例、旋转和平移

caching - block 矩阵矩阵乘法的最佳 block 大小值

c++ - 如何将 std::vector 用于带句柄的类

c++ - 遍历 vector 并删除内容

r - 根据确切的行/列名称插入矩阵值

r - g 非常大的空间对象上的交集

r - 按列名索引拆分数据框

mysql - R 中指向数据库的类似指针的变量

r - dplyr:如何处理多个值