我在R中有一个看起来像的数据框:
percent
Input_SNP 9.123
Set_1 8.713
Set_2 7.666
Set_3 7.091
Set_4 7.601
Set_5 5.461
Set_6 9.992
Set_7 5.555
除了我的句号超过Input_SNP
。当我拨打class(data)
时,它是“data.frame”类。我实际上有500套。我想计算哪些比例的集合的值大于或等于Input_SNP
。在此示例中,7中的1个值大于或等于my Input_SNP
。我想要一个具有此值的输出变量。如何在R中完成?
答案 0 :(得分:2)
如果您的数据被称为df
,那么您可以
inp <- rownames(df) == "Input_SNP"
with(df, percent[!inp] > percent[inp])
# [1] FALSE FALSE FALSE FALSE FALSE TRUE FALSE
这显示一个TRUE
值。要获取我们可以执行的TRUE
值的总数
with(df, sum(percent[!inp] > percent[inp]))
# [1] 1
对于价值本身,我们可以做到
with(df, percent[!inp][percent[!inp] > percent[inp]])
# [1] 9.992
数据:强>
df <- structure(list(percent = c(9.123, 8.713, 7.666, 7.091, 7.601,
5.461, 9.992, 5.555)), .Names = "percent", class = "data.frame", row.names = c("Input_SNP",
"Set_1", "Set_2", "Set_3", "Set_4", "Set_5", "Set_6", "Set_7"
))
答案 1 :(得分:2)
x <- df$percent[rownames(df) == "Input_SNP"]
ifelse(df >= x, 1, 0)
# percent
#Input_SNP 0
#Set_1 0
#Set_2 0
#Set_3 0
#Set_4 0
#Set_5 0
#Set_6 1
#Set_7 0