[英]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.