首页 > 解决方案 > 如何使用列数据创建存在/不存在数据框?

问题描述

我有一个类似于

df <- data.frame(sp1=c("e1", "e2", "e4"), sp2=c("e1", "e3", "e4"), sp3=c("e2", "e3", "e5"))

  sp1 sp2 sp3
1  e1  e1  e2
2  e2  e3  e3
3  e4  e4  e5

所以我想构建一个存在(1)/不存在(0)的数据框,类似于:

   sp1 sp2 sp3
e1  1   1   0
e2  1   0   1
e3  0   1   1
e4  1   1   0
e5  0   0   1

在这种情况下,所有 sp 元素都具有相同的长度,但在实际数据中,某些列可能存在更少或更多的元素: sp4=c("e1", "e3")

如何构建数据框(或矩阵)?

非常感谢 !!

标签: rdataframematrix

解决方案


您可以从数据中提取唯一级别并sapply使用table.

lvls <- sort(unique(unlist(df)))
sapply(df, function(x) table(factor(x, lvls)))

#   sp1 sp2 sp3
#e1   1   1   0
#e2   1   0   1
#e3   0   1   1
#e4   1   1   0
#e5   0   0   1

推荐阅读