子集基于行条件

时间:2015-04-20 16:47:44

标签: r

我阅读了很多文章,但似乎无法找到答案

census <- read.csv("data.csv", header=FALSE)
count <- 0
for(i in 1 : nrow(census)) {
  if(!(census[i,2] == '?' || census[i,7] == '?' || census[i,14] == '?')) {
    # need these values to be in the data frame.
    count <- count + 1
  }
}

有几列具有由?表示的未知值。如何在没有?

的情况下获得人口普查数据框的子集

2 个答案:

答案 0 :(得分:0)

试试这个让我知道: 即使一行有"?",该行也会被移除

census[(apply(census =="?", 1, sum)==0), ]

答案 1 :(得分:0)

以下是另一项试验。 ?替换为NA,然后complete.cases()用于子集化。

set.seed(1237)
census <- data.frame(col1 = sample(c('a','?','b'), 10, TRUE),
                     col2 = sample(c('a','?','b', 'c'), 10, TRUE),
                     stringsAsFactors = FALSE)
census[] <- lapply(census, function(x) { x[x == '?'] <- NA; x} )
census[complete.cases(census),]
   col1 col2
1     a    a
2     b    c
3     a    a
5     a    b
6     b    a
7     b    c
10    b    a