簡體   English   中英

在 R 中提取 data.table 中具有特定模式的列名

[英]extract column names with a specific pattern in data.table in R

我有一個非常大的 data.table,我想按組總結。 總結一下,我使用的是 data.table 和.SD。 挑戰是我需要命名我想要總結的列,而且它並不總是相同的。 取決於傳入的數據,有時我有更多的列,有時更少。 好消息是我感興趣的列總是具有相同的格式,即: f<X>_<Y>, m<X>_<Y>, f<X>, m<X>

這是所有可能的列名的列表:

ageColsPossible <- c("m0_9", "m10_19", "m20_29", "m30_39", "m40_49", "m50_59", "m60_69",
                   "f0_9", "f10_19", "f20_29", "f30_39", "f40_49", "f50_59", "f60_69") 

如果沒有足夠的數據可用,我的 data.table 將只有其中一些列。 我想獲得一個向量,其中包含數據中可用的列名:

>   names(myData)
 [1] "clientID"             "policyID"             "startYear"            "product"              "NOplans"              "grp"                 
 [7] "policyid"             "personid"             "age"                  "gender"               "dependant"            "location"            
[13] "region"               "exposure"             "startMonth"           "cover_effective_date" "endexposuredate"      "fromdate"            
[19] "enddate"              "planHistSufficiency"  "productRank"          "claim10month"         "claim11month"         "claim12month"        
[25] "claim9month"          "NA20_29"              "NA30_39"              "NA40_49"              "NA50_59"              "f0_9"                
[31] "f10_19"               "f20_29"               "f30_39"               "f40_49"               "f50_59"               "f60_69"              
[37] "m0_9"                 "m10_19"               "m20_29"               "m30_39"               "m40_49"               "m50_59"              
[43] "m60_69"               "u0_9"                 "u10_19"               "u20_29"               "u30_39"               "u40_49"              
[49] "u50_59"               "u60_69"               "uNA" 

我知道正則regrex ,並且正在考慮以下問題: regex = "(m|f)(\\d+)_?(\\d+)?" ,但我也在某處看到了 patern patern() function。 不幸的是,我再也找不到它了。

有任何想法嗎?

像這樣的東西很可能會成功..假設您只需要一個摘要功能? (在本例中為median() )...

DT[, lapply( .SD, median), by=.(group), .SDcols = patterns( "^[mf]\\d+" ) ]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM