R Language                
            列方向の操作
        
        
            
    サーチ…
各列の合計
データセットの各列のsumを計算する必要があるとします
set.seed(20)
df1 <- data.frame(ID = rep(c("A", "B", "C"), each = 3), V1 = rnorm(9), V2 = rnorm(9))
m1 <- as.matrix(df1[-1])
これを行うには多くの方法があります。 base Rを使用すると、最良のオプションはcolSums 
colSums(df1[-1], na.rm = TRUE)
ここでは、最初の列を非数値として削除し、各列のsumを行い、 na.rm = TRUE (データセットにNAsがある場合)を指定して、 
これはmatrixも動作します
colSums(m1, na.rm = TRUE)
これはループでlapply/sapply/vapplyをlapply/sapply/vapply行うことができます
 lapply(df1[-1], sum, na.rm = TRUE)
出力はlistであることに留意すべきである。 vector出力が必要な場合
 sapply(df1[-1], sum, na.rm = TRUE)
または
 vapply(df1[-1], sum, na.rm = TRUE, numeric(1))
行列の場合、列をループするapply 、 MARGIN = 1 applyを使用しapply 
 apply(m1, 2, FUN = sum, na.rm = TRUE)
 dplyrやdata.tableなどのパッケージでこれを行う方法があります
 library(dplyr)
 df1 %>%
     summarise_at(vars(matches("^V\\d+")), sum, na.rm = TRUE)
ここでは、 sumをsummarise_atするために必要な列名と一致する正規表現を渡しています。正規表現は、 Vで始まり、その後に1つ以上の数字( \\d+ )が続くすべての列と一致します。 
 data.tableオプションは次のdata.tableです。 
library(data.table)   
setDT(df1)[, lapply(.SD, sum, na.rm = TRUE), .SDcols = 2:ncol(df1)]
私たちは、「data.table」(に「data.frame」に変換setDT(df1) 、)で関数を適用する列を指定.SDcols Data.table(のサブセットを通って、ループ.SD )とget sum 。 
操作でグループを使用する必要がある場合は、グループを列/列で指定することで簡単に行うことができます
 df1 %>%
   group_by(ID) %>%   
   summarise_at(vars(matches("^V\\d+")), sum, na.rm = TRUE)
すべての列のsumが必要な場合は、 summarise_each代わりにsummarise_at使用できます
df1 %>%
    group_by(ID) %>%
    summarise_each(funs(sum(., na.rm = TRUE)))
 data.tableオプションは次のdata.tableです。 
setDT(df1)[, lapply(.SD, sum, na.rm = TRUE), by = ID]   
Modified text is an extract of the original Stack Overflow Documentation
        ライセンスを受けた CC BY-SA 3.0
        所属していない Stack Overflow