r - 制作一个函数来获取数据框R中多行的百分比
问题描述
我有一个包含数百个样本和数千个变量的数据框。但是这里我给出一个简单的数据框(my_data)作为说明。我想根据基因所属的集群(基因可以在多个集群中)获得变量相对于gene_count总和的百分比。我知道如何获取每个使用数据框操作的百分比。但是,由于我是编码新手,我正在尝试创建一个函数来获取百分比。谁能帮助如何使用我的函数(百分比)获得每个基因的百分比?结果将是“百分比”列上的百分比。非常感谢。
gene = c("CD63", "PTN", "MT2A", "PTGDS", "DBI", "TIMP1", "COX6C", "APLP2", "PTN", "GPC1")
gene_count = c(10, 15, 5, 15, 10, 25, 5, 5, 5, 5)
cluster = c(1,2, 3, 5, 7, 8, 9, 3, 6, 4 )
percent = c(0.1, 0.15, 0.5, 0.15, 0.1, 0.25, 0.05, 0.05, 0.05, 0.05)
my_data = data.frame(gene, gene_count, cluster, percent)
my_data
percent = function(gene, cluster){
for (gene in c(data$gene)){
if (data$gene == gene & data$cluster == cluster)
print(data$gene_count[which(data$gene == gene & data$cluster == cluster)]/sum(data$gene_count))
else print("Gene is not expressed in this cluster")
}
}
解决方案
您可以按以下方式编写函数:
percent <- function(data, my_gene, my_cluster) {
sub_data <- subset(data, gene == my_gene & cluster == my_cluster)
if(nrow(sub_data)) sum(sub_data$gene_count)/sum(data$gene_count)
else cat("Gene is not expressed in this cluster")
}
percent(my_data, 'PTN', 2)
#[1] 0.15
percent(my_data, 'ABC', 2)
#Gene is not expressed in this cluster
推荐阅读
- javascript - addEventListener 函数在开始时工作而不会被触发
- f# - 使用不可变列表创建具有链接节点的邻接列表
- python - 为什么它不打印这个变量?
- postgresql - Peewee 将字段更新为函数的结果
- nginx - 在 nginx 日志文件名中包含日期
- azure-active-directory - /v1.0/me 端点 preferredLanguage 属性源
- c# - C# 如何在构建中包含 DLL 依赖项?
- angular - Angular 6 - 'observable' 类型上不存在 rxjs 属性'map'
- docker - 是否可以与多个 Docker 容器共享 USB GPS 加密狗?
- css - Windows 上的 CSS 网格开发环境