如何检查原子矢量中某个数值是否超过20%

时间:2012-11-07 14:32:40

标签: r

我有一个原子向量,想要过滤掉得分超过20%的所有行。 数据如下:

                 Gain
ch1_500001  0.0000000
ch1_1500001 0.0000000
ch1_2500001 0.3157895
ch1_3500001 0.1578947
ch1_4500001 0.1578947
ch1_5500001 0.1578947

所以我希望选择ch1_2500001。

我尝试了几种方法:

freqsnormg<- freqsnorm==0.20仅提供FALSE

freqsnormg<- freqsnorm[,1]==0.20仅提供FALSE

如何获取仅包含20%以上值的新表。并且不要改变逻辑中的值。

4 个答案:

答案 0 :(得分:1)

要查看超过20%的值

freqsnormg<- freqsnorm[freqsnorm[,1]>0.20, ]

查看低于20%的值

freqsnormg<- freqsnorm[freqsnorm[,1]<0.20, ]

答案 1 :(得分:1)

你的问题没有意义,你提到单词vector,然后显示一个数据框。

  1. 如果您要过滤掉名为freqsnorm向量的值,请:

    freqsnorm[freqsnorm < 0.20]
    
  2. 您的数据看起来像数据框,因此您需要逗号来选择行:

    ##Here freqsnorm[,1] selects the first column
    freqsnorm[freqsnorm[,1] < 0.20]
    ##Refer to the column by name
    freqsnorm[freqsnorm$Gain < 0.20]
    
  3. 在这两种情况下,方括号中的部分将为您提供逻辑矢量,即:

    freqsnorm$Gain < 0.20 
    

    将返回TRUE,TRUE,FALSE等。然后我们使用方括号选择我们想要的元素。

答案 2 :(得分:1)

如果您正在处理data.frame尝试:

freqsnormg <- read.table(text='                 Gain
ch1_500001  0.0000000
ch1_1500001 0.0000000
ch1_2500001 0.3157895
ch1_3500001 0.1578947
ch1_4500001 0.1578947
ch1_5500001 0.1578947', header=T)

subset(freqsnormg, Gain>.2)  # above 20%
                 Gain
ch1_2500001 0.3157895

subset(freqsnormg, Gain<.2)  # below 20%
                 Gain
ch1_500001  0.0000000
ch1_1500001 0.0000000
ch1_3500001 0.1578947
ch1_4500001 0.1578947
ch1_5500001 0.1578947

答案 3 :(得分:1)

您显示的数据是原子矢量(组件Gain很可能 是原子矢量但完整对象不是)。

一种选择是使用subset()。使用您的数据

df <- read.table(text = "                 Gain
ch1_500001  0.0000000
ch1_1500001 0.0000000
ch1_2500001 0.3157895
ch1_3500001 0.1578947
ch1_4500001 0.1578947
ch1_5500001 0.1578947", header = TRUE)

我们有

> subset(df, Gain > 0.2)
                 Gain
ch1_2500001 0.3157895

如果你想强迫它下降到一个向量(即松散空白维度),那么

> subset(df, Gain > 0.2)[,1]
[1] 0.3157895