私はこれのような大きなdfを持っています(これはその一部です)。各サンプル(A、B、Cなど)には3つの値(R、H、L)があります。文字列を共有するすべての列を持つrowMeans
私はこの例では、各サンプルについてrowMeans
で新しいDFを作成したい
IDs R.A R.B R.C H.A H.B H.C L.A L.B L.C
A 6 5 4 5 5 5 5 1 4
B 2 5 3 3 4 3 5 5 6
C 6 6 3 2 2 1 4 1 3
D 2 1 6 3 5 3 3 6 5
E 4 1 3 2 3 1 4 4 4
F 3 1 1 1 4 4 2 6 4
:私は
IDs mean.A mean.B mean.C
A 3.0 5.0 3.0
B 5.7 5.3 4.7
C 3.0 4.7 4.7
D 3.0 1.7 5.3
E 3.3 4.0 4.3
F 4.0 2.3 4.0
私は、この例のためにそれを行う方法を知っているが、私はそれらの百を持っており、文字列を手動で指定することはできません(A、B、C)。
newcols <- sapply(c("A$", "B$", "C$"), function(x) rowMeans(df[grep(x, names(df))]))
setNames(cbind(df[1], newcols), c(names(df)[1], "mean.A", "mean.B", "mean.C"))
"文字列"を指定せずに "文字列"を共有するすべての列で操作を行う方法はありますか?
findThese <- unique(sub(pattern = "^[RHL]\\.(.+)$",
replacement = "\\1",
x = colnames(df)[!names(df) == "IDs"], # don't grab IDs column
perl = TRUE))
は、その後、あなたが見つかったユニークなサンプルを使用:あなたは一定のパターンを持っているので
@akrun - まったく - 私はそれがdata.tableできれいだと思う – thelatemail