我有一个原子向量,想要过滤掉得分超过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%以上值的新表。并且不要改变逻辑中的值。
答案 0 :(得分:1)
要查看超过20%的值
freqsnormg<- freqsnorm[freqsnorm[,1]>0.20, ]
查看低于20%的值
freqsnormg<- freqsnorm[freqsnorm[,1]<0.20, ]
答案 1 :(得分:1)
你的问题没有意义,你提到单词vector,然后显示一个数据框。
如果您要过滤掉名为freqsnorm
的向量的值,请:
freqsnorm[freqsnorm < 0.20]
您的数据看起来像数据框,因此您需要逗号来选择行:
##Here freqsnorm[,1] selects the first column
freqsnorm[freqsnorm[,1] < 0.20]
##Refer to the column by name
freqsnorm[freqsnorm$Gain < 0.20]
在这两种情况下,方括号中的部分将为您提供逻辑矢量,即:
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