2016-05-13 88 views
2

在此數據框中,對於每個唯一的計數,我有許多獨特的用戶。對於每個帳戶,我有一個月的成本變量。在這裏,我想創建例如一個新的變量cost2,我只保留尊重以下條件成本: *每個月,我想只保留成本只有一個帳戶和其他等於零在變量上選擇值取決於其他變量

acount <- c(1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 4, 4, 1) 
user <- c(1:12, 2) 
month <- c(201501, 201501, 201502, 201503, 201503, 201501, 
      201501, 201501, 201502, 201503, 201503, 201501, 201505) 
cost <- c(30, 30 , 25, 40 , 40, 20, 20, 17, 17, -20, 18, 13, 0) 

df <- data.frame(acount, user, month, cost) 

對於例如對於帳戶1,我想保持在cost2了以下值:30,25,0

我試圖與ifelse語句來做到這一點,但我堅持...... 謝謝

+0

不是真的,我要的是每個月由acount只保留一個成本值。這個價值將在cost2,但其他acount用戶本月將爲零(對不起,我的英語) –

+1

這是你想要的嗎? 'df%>%group_by(acount,month)%>%summarize(cost2 = cost [1])' – Gopala

+0

是的,這是它,謝謝,但有可能保持另一個用戶,並使cost2等於零? –

回答

1

Try:

df %>% 
    group_by(acount, month) %>% 
    mutate(cost2 = ifelse(row_number(cost) == 1, cost, 0)) 

其中給出:

#Source: local data frame [13 x 5] 
#Groups: acount, month [10] 
# 
# acount user month cost cost2 
# (dbl) (dbl) (dbl) (dbl) (dbl) 
#1  1  1 201501 30 30 
#2  1  2 201501 30  0 
#3  1  3 201502 25 25 
#4  2  4 201503 40 40 
#5  2  5 201503 40  0 
#6  2  6 201501 20 20 
#7  2  7 201501 20  0 
#8  3  8 201501 17 17 
#9  3  9 201502 17 17 
#10  3 10 201503 -20 -20 
#11  4 11 201503 18 18 
#12  4 12 201501 13 13 
#13  1  2 201505  0  0