如何计算满足R阈值的列的比例?

时间:2015-10-07 14:49:34

标签: r

我在R中的数据类中包含数据:

Input_SNP Set_1 Set_2 Set_3 Set_4 Set_5 Set_5 10.67 7.91 6.98 7.93 7.70 11.15 8.58

我实际上有500套。我想计算值大于或等于我的Input_SNP列的集合的比例。例如,这有1个值(11.15)大于或等于10.67。所以我想1 /(套数)。我确定这很简单,怎么办呢?

2 个答案:

答案 0 :(得分:1)

<head runat="server">
<title></title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.min.js" type="text/javascript"></script>
<script src="scripts/ScrollableGridPlugin.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js" type="text/javascript"></script>
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="Stylesheet" type="text/css" />
<link rel="stylesheet" href="css/default.css"/>

<script src="scripts/default.js" type="text/javascript"></script>

<script type="text/javascript">
    var scroll = {
        Y: '#<%= hfScrollPosition.ClientID %>'
    };
</script>

</head>

如果您不想使用数据框,则以下使用矩阵:

data = read.table(header = T,  text  = "Input_SNP     Set_1     Set_2     Set_3     Set_4     Set_5      Set_5
10.67          7.91      6.98      7.93      7.70      11.15      8.58")

# Compare all the values (except the first) to the first
data[,-1] > data$Input_SNP
# Set_1 Set_2 Set_3 Set_4 Set_5 Set_5.1
# [1,] FALSE FALSE FALSE FALSE  TRUE   FALSE


# Get the length of "true" index 
length(which(data[,-1] > data$Input_SNP)) / (ncol(data) - 1)
# 0.1666667

答案 1 :(得分:1)

无论是矩阵的数据框,您都可以尝试:

rowMeans(df[,-1] > df[,1], na.rm=TRUE)
#[1] 0.1666667

或者,如果我们使用您的上一个问题扩展数据,它仍然有效:

rowMeans(df[,-1] > df[,1], na.rm=TRUE)
#[1] 0.4000000 1.0000000       NaN 0.0000000 0.2000000 0.2000000 0.1666667

并确保它适用于矩阵:

mat <- as.matrix(df)
rowMeans(mat[,-1] > mat[,1], na.rm=TRUE)
#[1] 0.4000000 1.0000000       NaN 0.0000000 0.2000000 0.2000000 0.1666667

扩展数据

df <- read.table(text="Input_SNP   Set_1    Set_2     Set_3     Set_4     Set_5     Set_6
1.09        0.162    NA        2.312     1.876     0.12      0.812
0.687       NA       0.987     1.32      1.11      1.04      NA
NA          1.890    0.923     1.43      0.900     2.02      2.7
2.801       0.642    0.791     0.812     NA        0.31      1.60
1.33        1.33     NA        1.22      0.23      0.18      1.77
2.91        1.00     1.651     NA        1.55      3.20      0.99
2.00        2.31     0.89      1.13      1.25      0.12      1.55", header=T)

<强>更新

如果要将数据框与数字向量进行比较,则不需要第二个尺寸,因为它没有尺寸:

rowMeans(df[-1] > my_vector, na.rm=T)