2016-04-22 2 views
0

Я использовал пакет опросов в R для анализа данных Национального опроса по виктимизации преступлений. Книга Томаса Ламли Комплексные опросы: руководство по анализу с использованием R и файлы справки в его опросном пакете используют регулярное выражение для реплицируемых весов, которое выглядит следующим образом: PERREPWGT[1-160]+. Однако это выражение не всегда идентифицирует весь репликативный вес. Если я изменил знак + на? знак, регулярное выражение отлично работает и идентифицирует все репликативные веса. Ниже показан короткий тестовый пример. Я не очень уверен в регулярных выражениях. Это правильное изменение регулярного выражения или есть более надежный способ записи шаблона?Регулярное выражение для реплицируемых весов в комплексной съемке R-пакет

x<-c("V3067", "V3068", "V3069", "V3070", "V3071", "V3072", "V3073", "V3074", "V3075", "V3076", "V3077", "V3078", 
"V3079", "V3080", "WGTPERCY", "V3081", "V3082", "PERREPWGT1", "PERREPWGT2", "PERREPWGT3", "PERREPWGT4", 
"PERREPWGT5", "PERREPWGT6", "PERREPWGT7", "PERREPWGT8", "PERREPWGT9", "PERREPWGT10", "PERREPWGT11", 
"PERREPWGT12", "PERREPWGT13", "PERREPWGT14", "PERREPWGT15", "PERREPWGT16", "PERREPWGT17", "PERREPWGT18", 
"PERREPWGT19", "PERREPWGT20", "PERREPWGT21", "PERREPWGT22", "PERREPWGT23", "PERREPWGT24", "PERREPWGT25", 
"PERREPWGT26", "PERREPWGT27", "PERREPWGT28", "PERREPWGT29", "PERREPWGT30", "PERREPWGT31", "PERREPWGT32", 
"PERREPWGT33", "PERREPWGT34", "PERREPWGT35", "PERREPWGT36", "PERREPWGT37", "PERREPWGT38", "PERREPWGT39", 
"PERREPWGT40", "PERREPWGT41", "PERREPWGT42", "PERREPWGT43", "PERREPWGT44", "PERREPWGT45", "PERREPWGT46", 
"PERREPWGT47", "PERREPWGT48", "PERREPWGT49", "PERREPWGT50", "PERREPWGT51", "PERREPWGT52", "PERREPWGT53", 
"PERREPWGT54", "PERREPWGT55", "PERREPWGT56", "PERREPWGT57", "PERREPWGT58", "PERREPWGT59", "PERREPWGT60", 
"PERREPWGT61", "PERREPWGT62", "PERREPWGT63", "PERREPWGT64", "PERREPWGT65", "PERREPWGT66", "PERREPWGT67", 
"PERREPWGT68", "PERREPWGT69", "PERREPWGT70", "PERREPWGT71", "PERREPWGT72", "PERREPWGT73", "PERREPWGT74", 
"PERREPWGT75", "PERREPWGT76", "PERREPWGT77", "PERREPWGT78", "PERREPWGT79", "PERREPWGT80", "PERREPWGT81", 
"PERREPWGT82", "PERREPWGT83", "PERREPWGT84", "PERREPWGT85", "PERREPWGT86", "PERREPWGT87", "PERREPWGT88", 
"PERREPWGT89", "PERREPWGT90", "PERREPWGT91", "PERREPWGT92", "PERREPWGT93", "PERREPWGT94", "PERREPWGT95", 
"PERREPWGT96", "PERREPWGT97", "PERREPWGT98", "PERREPWGT99", "PERREPWGT100", "PERREPWGT101", "PERREPWGT102", 
"PERREPWGT103", "PERREPWGT104", "PERREPWGT105", "PERREPWGT106", "PERREPWGT107", "PERREPWGT108", "PERREPWGT109", 
"PERREPWGT110", "PERREPWGT111", "PERREPWGT112", "PERREPWGT113", "PERREPWGT114", "PERREPWGT115", "PERREPWGT116", 
"PERREPWGT117", "PERREPWGT118", "PERREPWGT119", "PERREPWGT120", "PERREPWGT121", "PERREPWGT122", "PERREPWGT123", 
"PERREPWGT124", "PERREPWGT125", "PERREPWGT126", "PERREPWGT127", "PERREPWGT128", "PERREPWGT129", "PERREPWGT130", 
"PERREPWGT131", "PERREPWGT132", "PERREPWGT133", "PERREPWGT134", "PERREPWGT135", "PERREPWGT136", "PERREPWGT137", 
"PERREPWGT138", "PERREPWGT139", "PERREPWGT140", "PERREPWGT141", "PERREPWGT142", "PERREPWGT143", "PERREPWGT144", 
"PERREPWGT145", "PERREPWGT146", "PERREPWGT147", "PERREPWGT148", "PERREPWGT149", "PERREPWGT150", "PERREPWGT151", 
"PERREPWGT152", "PERREPWGT153", "PERREPWGT154", "PERREPWGT155", "PERREPWGT156", "PERREPWGT157", "PERREPWGT158", 
"PERREPWGT159", "PERREPWGT160") 


#Regular expression consistent with examples in survey package 
#Does NOT identify all replicate weight names 
grep("PERREPWGT[1-160]+", x) 

#Correctly identifies array index 18 through 177 
grep("PERREPWGT[1-160]?", x) 

ответ

0

[1-160] не очень полезный шаблон регулярного выражения. вы хотите сопоставить все одиночные цифры 0-9 и разрешить более одного. для этого, используйте grep("PERREPWGT[0-9]+" , x)

Смежные вопросы