2013-04-17 1 views
0

저는 R을 처음 사용하고 있으며 문제를 해결하기 위해 노력하고 있습니다. 여기 내 데이터의 특정 위치를 참조하십시오.

내 데이터의 예입니다 :이 데이터에 대한

product_id    week   purchases 
     53    0     19    
     53    1     27    
     53    2     34     
     53    3     43     
     53    4     44  

, PRODUCT_ID의 세 가지 종류가 있으며, 주 변수 각각에 대해 긍정적 인 구매 값으로, 각 0-15에서 실행됩니다.

percent라는 세 번째 변수를 추가하고 관련 제품 데이터 ID에 대해 Purchases/week = 15 일 때의 구매 가치와 같게하고 싶습니다.

내 문제는 내가 R을 말하는 법을 모르겠다.이 방정식을 쓸 때 나는 주간 = 15 &의 제품 ID를 참조하고 싶다.

도움이 될 것입니다.

+0

라고한다, 실수로 삭제했습니다. 나는 여기에 그것을 재 게시하고, 내가 무엇을 요구하고 있었는지 명확히하려고 노력했다. 모든/모든 도움을 주셔서 대단히 감사합니다! – Snarksy

+0

예상되는 출력을 게시 할 수 있습니까? – Metrics

+0

product_id == 53 && week == 15, purchases == 200이면 percent라고하는 변수가 필요합니다. product_id == 53, week == 0, percent ==. 095; product_id = 53, week = 1, percent ==. 135 등 (.095는 19/200 등) – Snarksy

답변

2

15 대신 week==4을 사용합니다 (예제 데이터와 함께 사용 가능). 하나의 value == TRUEdata.table

library(data.table) 
DT <- data.table(DF) 
DT[, prop.purchase := purchases/purchases[week==4], by = product_id] 

다른 방법 사용 키와 by-without-by

를 사용 week==4

당신은 ave를 사용할 수있다 (그리고 transform)

transform(DF, prop.purchases = ave(purchases, product_id, FUN = function(x) x/ x[week==4])) 

에 있다는 것을 가정하고 이러한 모든 결과

DT <- data.table(DF, key = 'product_id') 

DT[DT[week==4], prop.purchase := purchases/i.purchaes] 

작동하여 간단한 샘플 데이터에 대한 간단한 ifelse를 사용 plyrddply

library(plyr) 

ddply(DF, .(product_id), mutate, prop.purchases = purchases/purchases[week==4]) 
+0

+1 나머지를위한 옵션을 남겨 두지 않기 위해 :-) – Nishanth

+0

대단히 감사합니다. 완벽하게 일했습니다! – Snarksy

0

사용 :

샘플 데이터가 샘플 내가 전에 또 다른 반복이 있었다

sample data (with added data for id 54 and 55: 
product_id week purchases 
53 0 19 
53 1 27 
53 2 34 
53 3 43 
53 4 44 
53 14 23 
54 0 23 
54 1 21 
54 2 22 
54 3 32 
54 4 33 
54 14 22 
55 0 22 
55 1 33 
55 2 44 
55 3 55 
55 4 11 
55 14 12 


sample$percent<-with(sample,ifelse(product_id ==53, purchases/purchases[week==14 &product_id==53],ifelse(product_id ==54, purchases/purchases[week==14 & product_id==54],purchases/purchases[week==14 &product_id==55]))) 

Output: 
product_id week purchases percent 
1   53 0  19 0.8260870 
2   53 1  27 1.1739130 
3   53 2  34 1.4782609 
4   53 3  43 1.8695652 
5   53 4  44 1.9130435 
6   53 14  23 1.0000000 
7   54 0  23 1.0454545 
8   54 1  21 0.9545455 
9   54 2  22 1.0000000 
10   54 3  32 1.4545455 
11   54 4  33 1.5000000 
12   54 14  22 1.0000000 
13   55 0  22 1.8333333 
14   55 1  33 2.7500000 
15   55 2  44 3.6666667 
16   55 3  55 4.5833333 
17   55 4  11 0.9166667 
18   55 14  12 1.0000000 
관련 문제