根据R中的列值(包括NA' s)选择行

时间:2018-01-19 12:45:58

标签: r

我是R的新手并试图将评估的区块与未评估的区块分开。我知道如何根据列值选择某些行,但是在这个特定的数据集中,只有几行表明它是否被评估(这将意味着对以下行的评估):

e.g:

     Block Number        Assessment block         Target or stimuli
     1                   no                       gaps
                                                  target         
                                                  gaps
                                                  target
                                                  gaps
                                                  target
     2                   no                       gaps 
                                                  target
                                                  gaps
                                                  target
                                                  gaps
                                                  target
     3                   yes                      gaps
                                                  target   
                                                  gaps
                                                  target
                                                  gaps
                                                  target
                                                  gaps
     4                   yes                      target
                                                  gaps
                                                  target 
                                                  gaps

如何仅选择评估的区块,而不会丢失未指定评估区域的行的数据?

E.g从第3块开始选择行

我必须为300个文件执行此操作,并且评估的块始终以不同的行号开始

任何帮助将不胜感激!谢谢!

2 个答案:

答案 0 :(得分:0)

请检查以下

a<-c(1,2,3,4,5)
b<-c('yes','no', 'yes', NA, 'yes')
e<-c('a', 'b', 'c', 'd', 'e')
x<-data.frame(a, b, e)
x[which(is.na(x$b) | x$b == 'yes'),]

答案 1 :(得分:0)

简短回答:

只需使用which进行比较,您就可以使用NA来处理==问题。

LONG ANSWER:

给出这个例子df:

test <- data.frame(Block_Number = c(1,2,3,4,5),
           Assessment_Block = c("no", "no", "yes", "yes", NA))

如果我理解正确,你做了类似的事情:

test[test$Assessment_Block == "yes",]

还返回了第5列(在我的示例中),在Assessment_Block中有NA。如果您添加which,则应解决问题:

test[which(test$Assessment_Block == "yes"),]