从For Frame R中的数据帧中选择满足if条件的元素

时间:2015-05-15 13:33:03

标签: r if-statement for-loop

我正在使用函数内的数据框,我在syntaxis中遇到了问题。这是我正在使用的框架:

c
   id nobs
1   1  117
2   2 1041
3   3  243
4   4  474
5   5  402
6   6  228
7   7  442
8   8  192
9   9  275
10 10  148

这是我正在使用的代码。

threshold=250
c
for (i in c[1]){ 
    if(threshold > any(c[i,2])){
        print(c[i,1])
    }
}

我想要的是获取数据框的第一个元素是满足条件,但我得到结果: [1] 1 2 3 4 5 6 7 8 9 10.只需要:1 3 6 8 10

任何帮助将不胜感激。提前谢谢。

4 个答案:

答案 0 :(得分:1)

使用which

c[which(c$nobs<250),1]

答案 1 :(得分:0)

subset(c, nobs > threshold)

答案 2 :(得分:0)

不确定:

#df is your dataframe

选项1:

 with(df,ifelse(nobs<250,lag(id,1),NA))
     [1]  1 NA  3 NA NA  6 NA  8 NA 10

选项2:

df[df$nobs<250,"id"]
[1]  1  3  6  8 10

答案 3 :(得分:0)

让我们调用您的data.frame x以避免函数名称c发生冲突。

遵循您的语法,它应该是:

for (i in seq_len(nrow(x))){ 
    if(threshold > x[i,2]){
        print(x[i,1])
    }
}

或者简单地说,

x[x[,2] < threshold, 1]