2017-11-30 7 views
0

私は顧客とどのくらい彼らが費やしてきた情報を含むデータのセットを持っていると一致するtapplyを使用して、各顧客にのみonce.Example表示されます。複数の変数の少なくとも1

customer<-c("Andy","Bobby","Oscar","Oliver","Jane","Cathy","Emma","Chris") 
age<-c(25,34,20,36,23,35,34,22) 
category<-c("A","B","B","A","C","B","C","A") 
moneyspent<-c(100,100,200,200,400,400,500,200) 

data<-data.frame(customer=customer,age=age,category=category,moneyspent=moneyspent) 

私がしたい場合はカテゴリでの平均消費金額を算出し、私はtapply使用することができます。

tapply(data$moneyspent,data$category,mean) 

与える:

A  B  C 
mean1 mean2 mean3 

しかし、今はカテゴリOR年齢によって費やされた平均金額を探したいと思っています。共通して、これらの機能のうちの少なくとも1つを有するすべての消費者は、たとえばtogether.In私が目指していた結果でなければなりません。

Group 1 Group 2 
mean1  mean2 
group1にのみ、カテゴリAを持ち、グループ2は、カテゴリBを持っていますが、のために1

BのcostumersはグループCの少なくとも1つのコスチュームの同じ年齢(34)、グループ2もカテゴリーCを持っています。

私のデータベースにはいくつかのカテゴリと年齢があり、どのグループを形成するかを計算する必要があります。

+0

をしたい場合は私たちが==

library(dplyr) data %>% group_by(grp = paste0("Group", (category != "A")+1)) %>% summarise(moneyspent = mean(moneyspent)) 

を使用してグループ化変数を作成する必要があるかもしれません事前に知られている?実際のデータにはさらに多くのグループがありますか? –

+0

ジェンダーの欄がなく、カテゴリの列が3つのカテゴリで構成されているのに対し、ジェンダーは主に2つの区別しかありません(いくつかの例外はありますが)。またORは、あなたがそれをどのように意味しているか明らかではありません。 –

+0

あなたが正しいです、私はそれを修正します。 –

答えて

1

私たちは、あなたがグループが一緒になるべき計算する機能が欲しいかということであるですかtapply

with(data, tapply(moneyspent, paste0('Group', (category != "A") +1), FUN = mean)) 
# Group1 Group2 
#166.6667 320.0000 
+0

これは、指定された例でのみ動作します。データベース全体では、年齢の組み合わせが異なるより多くのカテゴリがあります。 –

+0

@LucasMartinuzzoあなたは特に、BとCは34歳で共有していると言っています。ここで私は「A」に基づいてグループ分けしており、他はすべてグループ2にグループ分けされます。私はあなたが投稿にいくつかの情報を含めていないと思う。 – akrun

+1

あなたは正しいです、私はより多くの情報を含んでいます。 –

関連する問題