Как удалить строки в этом CSV-файле, которые содержат определенные строки - PullRequest
0 голосов
/ 23 июня 2019

Мой файл, в котором я читаю, очень большой, и определенная строка слов всегда появляется несколько раз по всему файлу.Мне просто нужно, чтобы он прошел через файл и удалил каждую строку, содержащую эти конкретные строки / NA.

Я использовал функцию grep, чтобы попытаться избавиться от строк, но она избавляется только от первой строки, которая появляется, и от остальных строк.

RAO <- readr::read_csv(file = "RateAddOnsExcel.csv")

RAO$...4 <- NULL
RAO$...5 <- NULL
RAO$Quarter. <- NULL
names(RAO)[1:13] = c("ProviderName","AIMNumber", "ChainName", 
"RateEffectiveDate", "ComponentTotal", 
                 "VentAddOn", "QualityAddOn", 
"SpecialCareUnitAddOn", "AssessmentAddOn", 
                 "SelectedExpenditureAddOn", "RateReduction", 
"CaseMixRate", "CaseMixAssessment")
RAO$AIMNumber <- NULL
RAO$ChainName <- NULL
names(RAO)[1:13] = c("ProviderName","AIMNumber", "ChainName", 
"RateEffectiveDate", "ComponentTotal", 
                 "VentAddOn", "QualityAddOn", 
"SpecialCareUnitAddOn", "AssessmentAddOn", 
                 "SelectedExpenditureAddOn", "RateReduction", 
"CaseMixRate", "CaseMixAssessment")

RAO <- RAO[-which(apply(RAO, 1, function(x)all(is.na(x)))),]

View(RAO)
remove.list <- paste(c("Myers", "Provider", "NA", "JJ"), collapse = 
'|') 
RAO %>% filter(!grepl(remove.list, RAO$ProviderName)) 
RAO %>% filter(!str_detect(RAO$ProviderName, remove.list))

Я бы хотел избавиться от тех специфических строк, которые я там вставил.

1 Ответ

1 голос
/ 23 июня 2019
library(dplyr)

# simulate some data
set.seed(12345)
RAO <- data.frame(A = sample(c("Myers", "Provider", "NA", "JJ", "Stack","Overflow"), 50, replace=T),
              B = rnorm(50) )
head(RAO)
#          A          B
# 1    Stack  1.8050975
# 2 Overflow -0.4816474
# 3    Stack  0.6203798
# 4 Overflow  0.6121235
# 5       NA -0.1623110
# 6    Myers  0.8118732

# Remove rows where column A is one of Myers,Provider or NA
RAO %>% filter( !grepl ("Myers|Provider|NA", A))
#           A           B
# 1     Stack  1.80509752
# 2  Overflow -0.48164736
# 3     Stack  0.62037980
# 4  Overflow  0.61212349
# 5        JJ  2.04919034
# 6     Stack  1.63244564

Или, если значения в столбце A содержат более одного слова, и вы хотите удалить эти строки, где значение начинается с одного из этих 3 слов, вы можете добавить символ «^» к регулярному выражению в функции grepl : grepl ("^Myers|^Provider|^NA", A)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...