50

このデータセットを考えると:

  Name Height Weight
1 Mary     65    110
2 John     70    200
3 Jane     64    115

すべての修飾子列 (身長と体重) を合計したい

 199  425

問題は、修飾子が 2 つ以上になる可能性があることです (つまり、Height と Weight だけではありません)。

私がすることができます。

    # Create the dataframe people
    Name <- c("Mary", "John", "Jane")
    Height <- c(65,70,64)
    Weight <- c(110,200,115)
    people <- data.frame(Name, Height, Weight)

    res <- c(sum(people$Height),sum(people$Weight))

しかし、クオリファイアーが増えると長くなりすぎます。それを行うコンパクトな方法は何ですか?

4

5 に答える 5

86

関数colSums()を使用して、すべての値の合計を計算できます。 [,-1]人の名前を含む最初の列が除外されるようにします。

 colSums(people[,-1])
Height Weight 
   199    425

数値ではない複数の列が存在する可能性がある、または列の順序が固定されていないと仮定すると、より一般的なアプローチは次のようになります。

colSums(Filter(is.numeric, people))
于 2013-08-23T06:54:24.460 に答える