r - 如何使用列数据创建存在/不存在数据框?
问题描述
我有一个类似于
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")
如何构建数据框(或矩阵)?
非常感谢 !!
解决方案
您可以从数据中提取唯一级别并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
推荐阅读
- django - Django:“QuerySet”对象没有“序列化”属性
- sql - SQL Server如何按连续记录分组
- python - 如何在 python 中为聊天机器人创建一个假的进度条?
- kubernetes - 重写 Google Kubernetes Engine Ingress Controller 的上下文路径
- azure - 将逻辑应用连接到资源日历
- c# - 使用一个实现的接口来实例化具有多个接口的通用类
- bash - shell脚本中的日文文件名列表,如何避免意外输入转义线
- python - 重塑 pandas 中的数据
- django - 在 Django 中查询时合并结果
- sql-server - 更改 AWS windows 机器