У меня есть набор данных по группе участков переписи, которые являются частью большего набора данных. Я хочу извлечь 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
}