Delete lines with a specific string

Asked

Viewed 140 times

2

I would like to delete all lines that show "-" in the column "Shop area", how do I delete? Below follows the result of the command dput(censo) of my data frame:

structure(list(Unidade.da.Federação = c("Rondônia", "Rondônia", 
"Rondônia", "Rondônia", "Rondônia", "Rondônia", "Rondônia", "Rondônia", 
"Rondônia", "Rondônia", "Rondônia", "Rondônia", "Rondônia", "Rondônia", 
"Rondônia", "Rondônia", "Rondônia", "Rondônia", "Rondônia", "Rondônia"
), Direção.dos.trabalhos.do.estabelecimento.agropecuário = c("Produtor(a) titular diretamente", 
"Produtor(a) titular diretamente", "Produtor(a) titular diretamente", 
"Produtor(a) titular diretamente", "Produtor(a) titular diretamente", 
"Produtor(a) titular diretamente", "Produtor(a) titular diretamente", 
"Produtor(a) titular diretamente", "Produtor(a) titular diretamente", 
"Produtor(a) titular diretamente", "Produtor(a) titular diretamente", 
"Produtor(a) titular diretamente", "Produtor(a) titular diretamente", 
"Produtor(a) titular diretamente", "Produtor(a) titular diretamente", 
"Produtor(a) titular diretamente", "Produtor(a) titular diretamente", 
"Produtor(a) titular diretamente", "Produtor(a) titular diretamente", 
"Produtor(a) titular diretamente"), Grupos.de.área.total = c("Mais de 0 a menos de 0,1 ha", 
"Mais de 0 a menos de 0,1 ha", "Mais de 0 a menos de 0,1 ha", 
"Mais de 0 a menos de 0,1 ha", "Mais de 0 a menos de 0,1 ha", 
"Mais de 0 a menos de 0,1 ha", "Mais de 0 a menos de 0,1 ha", 
"Mais de 0 a menos de 0,1 ha", "Mais de 0 a menos de 0,1 ha", 
"Mais de 0 a menos de 0,1 ha", "Mais de 0 a menos de 0,1 ha", 
"Mais de 0 a menos de 0,1 ha", "Mais de 0 a menos de 0,1 ha", 
"Mais de 0 a menos de 0,1 ha", "Mais de 0 a menos de 0,1 ha", 
"Mais de 0 a menos de 0,1 ha", "Mais de 0 a menos de 0,1 ha", 
"Mais de 0 a menos de 0,1 ha", "Mais de 0 a menos de 0,1 ha", 
"Mais de 0 a menos de 0,1 ha"), Utilização.das.terras = c("Lavouras - permanentes", 
"Lavouras - permanentes", "Lavouras - permanentes", "Lavouras - permanentes", 
"Lavouras - permanentes", "Lavouras - permanentes", "Lavouras - permanentes", 
"Lavouras - permanentes", "Lavouras - temporárias", "Lavouras - temporárias", 
"Lavouras - temporárias", "Lavouras - temporárias", "Lavouras - temporárias", 
"Lavouras - temporárias", "Lavouras - temporárias", "Lavouras - temporárias", 
"Lavouras - área para cultivo de flores", "Lavouras - área para cultivo de flores", 
"Lavouras - área para cultivo de flores", "Lavouras - área para cultivo de flores"
), Condição.legal.do.produtor = c("Produtor individual", "Condomínio, consórcio ou união de pessoas (inclusive casal, quando os dois forem responsáveis pela direção)", 
"Cooperativa", "Sociedade anônima ou por cotas de responsabilidade limitada", 
"Insituição de utilidade pública", "Governo (federal, estadual ou municipal)", 
"Outra condição", "Não se aplica", "Produtor individual", "Condomínio, consórcio ou união de pessoas (inclusive casal, quando os dois forem responsáveis pela direção)", 
"Cooperativa", "Sociedade anônima ou por cotas de responsabilidade limitada", 
"Insituição de utilidade pública", "Governo (federal, estadual ou municipal)", 
"Outra condição", "Não se aplica", "Produtor individual", "Condomínio, consórcio ou união de pessoas (inclusive casal, quando os dois forem responsáveis pela direção)", 
"Cooperativa", "Sociedade anônima ou por cotas de responsabilidade limitada"
), Número.de.estabelecimentos.agropecuários.com.área..Unidades. = c("29", 
"4", "-", "-", "-", "-", "-", "-", "46", "6", "-", "-", "-", 
"-", "-", "-", "8", "-", "-", "-"), Área.dos.estabelecimentos.agropecuários..Hectares. = c("X", 
"X", "-", "-", "-", "-", "-", "-", "X", "X", "-", "-", "-", "-", 
"-", "-", "X", "-", "-", "-"), util1 = c("Lavouras ", "Lavouras ", 
"Lavouras ", "Lavouras ", "Lavouras ", "Lavouras ", "Lavouras ", 
"Lavouras ", "Lavouras ", "Lavouras ", "Lavouras ", "Lavouras ", 
"Lavouras ", "Lavouras ", "Lavouras ", "Lavouras ", "Lavouras ", 
"Lavouras ", "Lavouras ", "Lavouras "), util2 = c(" permanentes", 
" permanentes", " permanentes", " permanentes", " permanentes", 
" permanentes", " permanentes", " permanentes", " temporárias", 
" temporárias", " temporárias", " temporárias", " temporárias", 
" temporárias", " temporárias", " temporárias", " área para cultivo de flores", 
" área para cultivo de flores", " área para cultivo de flores", 
" área para cultivo de flores")), row.names = c(NA, 20L), class = "data.frame")

2 answers

3

Every position of a data frame df R can be accessed via the command

df[x, y]

In which x is the line of interest and y is the column of interest. However, when rotating df[x, ], without specifying the desired column, R understands that it must report all columns of the data frame.

To select column rows Área.dos.estabelecimentos.agropecuários..Hectares. which are not equal to -, just use the different operator: !=.

So, by combining these two pieces of information, we have the intended response:

censo[censo$Área.dos.estabelecimentos.agropecuários..Hectares. != "-", ]

1

The following does what the question asks.

i_col <- grep("área.dos.estabelecimentos", names(censo), ignore.case = TRUE)
i_linha <- grepl("-", censo[[i_col]])
censo2 <- censo[!i_linha, ]

Browser other questions tagged

You are not signed in. Login or sign up in order to post.