【发布时间】:2017-11-20 11:59:12
【问题描述】:
我有一个 384 列的 data.frame。我想根据字母 A-H 后跟两个数字的子字符串对具有相似列名的列求和。
我试图存储一个模式然后循环,但无法定义唯一的子字符串。
patterns <- unique(substr(names(DT)))
new <- sapply(patterns, function(xx) rowSums(DT[,grep(xx, names(DT)), drop=FALSE]))
我的 colnames 看起来像这样:
> head(colnames(DT))
[1] "01_001_A01_S1_L001_R1_001" "01_001_A01_S1_L005_R1_001" "01_002_A02_S2_L001_R1_001" "01_002_A02_S2_L005_R1_001"
[5] "01_002_A03_S3_L001_R1_001" "01_002_A03_S3_L005_R1_001"
求和列 A01 和 A01、A02 和 A02 等...
【问题讨论】:
-
lapply(split.default(df1, names(df1)), rowSums)? -
我认为这行不通。 split.default 在这里做什么?
-
在不知道列名中的模式(例如该子字符串出现的位置)的情况下,不清楚如何提取它,即。它可能是
zA01或ZA01ddf等。您的代码unique(substr(names(DT)))和substr没有任何开始或结束参数。
标签: r