2016-05-06 8 views
0

は私のデータの例である:因子に基づいて変数を合計するにはどうすればよいですか?ここ

Type <- c('A','A','A','A','B','B','C','D') 
Name <- c('DK', 'MO', 'OM', 'LSO', 'GOP', 'ADG','BFC','TMD') 
Value <- c(3,2,5,3,6,5,7,6) 
Dat <- data.frame(Type, Name,Value) 
Dat 
    Type Name Value 
1 A DK  3 
2 A MO  2 
3 A OM  5 
4 A LSO  3 
5 B GOP  6 
6 B ADG  5 
7 C BFC  7 
8 D TMD  6 

私が取得しようとしているどのような値タイプ= Aの合計です。この場合、それは13です。私はdplyrを適用して同様の例を見つけましたが、タイプも名前も必要ありません。助けてくれてありがとう!

+4

'合計(ダット$値[ダット$タイプ== 'A'])' – Sotos

+3

それとも、全く同様に '合計(DAT [ダット$タイプ== "A"、 "値"])'と'($ Dat Type ==" A "、$ Value)'と '(Dat、sum(Value [Type == 'A']))'のように '' – lmo

+2

'tapply(Dat $ Value、Dat $ Type、sum)で' A 'だけでなく各グループの合計を取得します。これには他にもたくさんの方法があります。 – nicola

答えて

1

dplyrを使用すると、group_byを使用して各タイプをグループ化することができます。タイプAのみが必要な場合は、タイプ==Aのフィルタリングを行うことができます。両方の場合、値の合計で要約します。私は以下の両方の例を示しました。

library(dplyr) 

    Type <- c('A','A','A','A','B','B','C','D') 
    Name <- c('DK', 'MO', 'OM', 'LSO', 'GOP', 'ADG','BFC','TMD') 
    Value <- c(3,2,5,3,6,5,7,6) 
    Dat <- data.frame(Type, Name,Value) 
    Dat 

    res1 <- Dat %>% 
     group_by(Type) %>% 
     summarize(sum(Value)) 
    res1 
# Source: local data frame [4 x 2] 
# 
# Type sum(Value) 
# (fctr)  (dbl) 
#1  A   13 
#2  B   11 
#3  C   7 
#4  D   6 

    res2 <- Dat %>% 
     filter(Type == "A") %>% 
     summarize(sum(Value)) 
    res2 
# sum(Value) 
#1   13 
関連する問題