【问题标题】:Regular expression for replicate weights in complex survey R package复杂调查 R 包中重复权重的正则表达式
【发布时间】:2016-08-17 05:52:21
【问题描述】:

我使用 R 中的调查包来分析来自国家犯罪受害调查的数据。 Thomas Lumley 的书 Complex Surveys: A guide to analysis using R 和他的调查包中的帮助文件使用正则表达式来表示重复权重,如下所示,PERREPWGT[1-160]+。然而,这个表达式并不总是能识别所有的重复权重。如果我将 + 号更改为 ?符号,正则表达式可以正常工作并识别所有复制权重。一个简短的测试用例如下所示。我对正则表达式不是很有信心。这是对正则表达式的正确更改还是有更可靠的方法来编写模式?

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)

【问题讨论】:

    标签: r survey


    【解决方案1】:

    [1-160] 并不是一个真正有用的正则表达式模式。您想匹配 0-9 的所有单个数字,并允许多个数字。为此,请使用grep( "PERREPWGT[0-9]+" , x )

    【讨论】:

      【解决方案2】:

      原始问题引用的示例使用“WT[1-9]+”之类的正则表达式来指定任何变量名称,其中 WT 后跟至少一位数字 1-9。 1-9 很重要:在该数据集中,采样权重为 WT0,并且选择了正则表达式以不选取 WT0。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-10-17
        • 1970-01-01
        • 2012-12-12
        • 1970-01-01
        • 2020-02-06
        • 2017-04-19
        • 2021-09-12
        • 1970-01-01
        相关资源
        最近更新 更多