Имеете дело со совпадением строк со строками, которые отличаются незначительно? - PullRequest
0 голосов
/ 04 октября 2019

У меня есть набор данных по группе участков переписи, которые являются частью большего набора данных. Я хочу извлечь 4 столбца для каждого участка переписи, в названии которого указан номер участка.

В настоящее время проблема заключается в том, что моя функция сопоставления строк рассматривает 1.11 как такое же совпадение, как 1.1, 1.14 и 1.13, поэтому я получаю фрейм данных с 16 столбцами вместо 4 или 8 вместо 4.

Кажется, что строка не полностью совпадает.

Хорошо, скажем, имена моих столбцов выглядят следующим образом:

    (1.08_Estimate, 1.08_MarginEst,1.08_Percent,  1.08_MarginPerc, 1.1_Estimate, 
1.1_MarginEst,  1.1_Percent, 1.1_MarginPerc, 1.11_Estimate, 1.11_MarginEst , 
1.11_Percent, 1.11_MarginPerc, 1.12_Estimate, 1.12_MarginEst, 1.12_Percent, 
1.12_MarginPerc, 1.14_Estimate, 1.14_MarginEst, 1.14_Percent, 1.14_MarginPerc)

Сначала я извлек значения, предшествующие "_", и сделал из них уникальный вектор.

Это выглядит хорошо. Вектор заканчивается, как показано ниже. names_col2 = "1.08_" "1.1_" "1.11_" "1.12_" "1.14_"

Затем я пытаюсь запустить его через цикл for для извлечения соответствующих столбцов.

К сожалению, я получаю список, в котором есть кадры данных со всеми столбцами, начинающимися с «1.1», вместо того, чтобы иметь уникальный кадр данных для 1.1 и 1.11 и 1.12 и 1.14. Я разочарован, потому что я даже добавляю "_" к names_col2, чтобы он соответствовал полной строке, а не только числам.

Я не знаю, что я делаю неправильно, и я хотел бы помочь.

names_col2 <- colnames(dataframe) %>% sub('\\_.*', '_', .) %>% unique(.) 

a <- NULL
result <-NULL
result = list()
for (i in 1:5){
a <- dataframe[,grep(paste(names_col2[i]), colnames(dataframe), value=FALSE)]
a <-as.data.frame(a)
result[[length(result)+1]] = a
}
...