r - 在两个不同的列中满足两个条件的观察百分比(以 r 为单位)
问题描述
我有一个很棒的数据库,其中列是物种存在和采矿项目存在(存在 = 1,ausence = 0),行是地理位置(像素)。我想在specie1 = 1&mining project = 1时获得关于specie1 = 1的像素百分比。我有100多个物种,所以我需要一种循环才能更高效
我试图用for做一个循环,但我不知道什么是“i”。
这是我想做的一个例子
x <- data.frame("dog" = c(1,1,0,0,1,1), "cat" = c(1,0,0,0,1,1),
+ "trap" = c(1,1,0,1,0,1))
> x
dog cat trap
1 1 1 1
2 1 0 1
3 0 0 0
4 0 0 1
5 1 1 0
6 1 1 1
> dog <- sum(x$dog==1 & x$trap==1)/sum(x$dog==1)
> dog
[1] 0.75
> cat <- sum(x$cat==1 & x$trap==1)/sum(x$cat==1)
> cat
[1] 0.6666667
对于我所有的 100 个物种,我想以最少的步骤得到这个答案:
[1] dog 0.75
[2] cat 0.6666
解决方案
一个选项正在使用colSums
colSums(x[-3] * x[,3])/colSums(x[-3])
# dog cat
#0.7500000 0.6666667
或与sapply
sapply(x[1:2], function(y) sum(y ==1 & x[,3] == 1)/sum(y ==1))
# dog cat
#0.7500000 0.6666667
推荐阅读
- angular - 从垫子菜单拖放到部分
- jmx - 如何在 jmx4perl 中关闭 ssl 证书验证
- node.js - 带有expressjs的私有api并做出反应?
- android - NotifyDataSetChanged 在带有 FragmentStateAdapter 的 Viewpager2 中不起作用
- c++ - 如何知道 C++ 中进程的提交内存(共享和私有)
- maven - 分叉的 VM 没有正确告别就终止了。虚拟机崩溃或调用 System.exit
- apache-kafka - 是否需要经纪人才能创建主题?
- ios - 如何在使用 UITableViewDiffableDataSource 时设置表格视图单元格的高度(如 heightForRowAt)
- reactjs - userEvent.type 不更新测试中的输入值
- c# - 从最后一个句号中删除字符串