r - 寻找唯一变量
问题描述
我有三个数据框(森林、农业和城市),每个数据框有 1 行和 24145 列(参见底部的示例)。每列代表一个不同的分子式,每个单元格中的值对应于样本(森林、农业和城市)中该分子式的相对数量。
我试图找出最好的方法来找出上面三个样品中的每一个都有哪些分子式。例如,如果我有一个分子式 (C10H10),其森林的值为 0.12,但农业和城市的值为 0,我希望能够获得一个最终产品,表明该特定公式仅存在于森林样本中.
最终,我想用这个最终产品绘制一个图,在其中我可以在轴上绘制分子式信息(x 上的氧与碳的比率以及 y 上的氢与碳的比率)并在图中有各个点对应于那些独特的公式,颜色编码以表示它们是在哪个样本中唯一发现的。
提前致谢!
输入的小例子,三个独立的数据框组合成一个称为 Samples 的数据框(实际上输入有 24145 个不同的分子式,而不仅仅是这里列出的 4 个):
C10H10O3N1S0 C10H1004N1S0 C10H10O5N1S0 C10H10O5N1S1
Forest 0.00 1.44 0.00 0.00
Agriculture 0.00 0.00 1.11 4.94
Urban 1.29 0.00 1.33 0.00
解决方案
使用示例数据:
df <- data.frame(Forest=0:20,Agriculture=10:30,Urban=c(10:20,51:60))
Forest Agriculture Urban
1 0 10 10
2 1 11 11
3 2 12 12
4 3 13 13
5 4 14 14
6 5 15 15
7 6 16 16
8 7 17 17
9 8 18 18
10 9 19 19
11 10 20 20
12 11 21 51
13 12 22 52
14 13 23 53
15 14 24 54
16 15 25 55
17 16 26 56
18 17 27 57
19 18 28 58
20 19 29 59
21 20 30 60
我们可以做这样的事情
uniquevals <- list()
for(i in 1:ncol(df)){
uniquevals[[i]] <- df[,i][rowSums(apply(df[,-i],2, function(x) df[,i] %in% x)) == 0]
}
names(uniquevals) <- colnames(df)
获取每个列表
> uniquevals
$Forest
[1] 0 1 2 3 4 5 6 7 8 9
$Agriculture
[1] 21 22 23 24 25 26 27 28 29 30
$Urban
[1] 51 52 53 54 55 56 57 58 59 60
推荐阅读
- json - 访问一个数组中的 JSON 对象重复值
- elasticsearch - ElasticSearch:查找索引的索引率
- marklogic - Marklogic 中 NEAR 查询的问题
- python - 用多种颜色为 Tkinter 按钮着色
- java - Hazelcast缓存实现使用Apache骆驼蓝图
- angular - 角度4:选项标签的多个值
- sql - 如何在 Postgres 中将 SQL 数据从一个视图转换为另一个视图
- rest - Meteor POST 不发送数据
- spring-boot - SpringBoot 命名查询:IN 子句不适用于多个值
- javascript - 单击按钮以创建 SELECT 和 OPTION 元素