2017-01-10 11 views
0

親愛なるスタックオーバーフローコミュニティ列ラベルに基づいて列を合計する方法(一般的な文字を含む)?

私はフォーラムで初めてです、私の最初の投稿です。

以下の私の問題は、それ:

列ラベルは、典型的な文字が含まれているかどうか、私は列にわたって、行ごとに、合計したい

(私の場合には、いずれかが含ま「完全」または「不完全」)と関連する列「sum_complete」と「sum_incomplete」にこれらの合計を報告します。

set.seed(1) 
incomplete_x=1:10 
incomplete_y=rnorm(10) 
complete_x=runif(10) 
complete_y=3:12 
dt=cbind(incomplete_x,incomplete_y,complete_x,complete_y) 

私はdt[,5]それぞれ含むdt[,6]がしたい:

0.3735462 2.1836433 2.1643714 5.5952808 5.3295078 5.1795316 7.4874291 8.7383247 9.5757814 9.6946116

3.934705 4.212143 5.651674 6.125555 7.267221 8.386114 9.013390 10.382388 11.869691 12.340349

for (i in 1:ncol(dt)) { 
    if (grepl("incomplete",colnames(dt)[i])==TRUE) { 
    dt[,"sum_incomplete"] <- rowSums(dt) 
    } else { 
    dt[,"sum_complete"] <- rowSums(dt) 
    } 
} 

をしかし、コードは動作しません:10私は(...コーディングで申し訳ありませんが、良いではない)のようなものをやってきました。

このコードで助けてください。 ご協力いただきありがとうございます!

アンソニー

答えて

0

あなたがgrepを使用して正しい方向に向かったが、forループはサイドノートとして

dt <- cbind(dt, rowSums(dt[, grep("^incomplete", colnames(dt))])) 
dt <- cbind(dt, rowSums(dt[, grep("^complete", colnames(dt))])) 

colnames(dt)[5:6] <- c("sum_incomplete", "sum_complete") 

を必要とされていない、それはおそらく最高のマトリックスとしての命名dtを使用することはありませんそれは関数名でもあり、別のライブラリの略語かもしれません。

関連する問題