我有點失去了執行我想在R中執行的最佳方式。根據重複和其他列的條件添加列R
我有一個包含多列的數據幀。其中一個是用戶和其他列,讓我們說數字(0,1,2,3,4,5)。有時用戶重複,但在這種情況下,列號應該有一個數字序列。可以是這樣的:
user number column B column C
1 0 85 200
2 1 165 852
1 2 200 1000
3 0 15 689
3 1 89 896
4 0 78 582
4 2 96 586
我想獲得的是:
user number status days
1 0 0 200
3 0 1 50 ->(value column C, user 3, number 1)-(value column B, user 3, number 0)
4 0 0 200
我想兩列添加到基於這些用戶的價值數據幀。
- 如果用戶有多個== 0,但用戶是獨特的地位== 0和天==一些預定數量
- 如果用戶有多個== 0和用戶不是唯一
- 如果用戶第二次出現的數== 1,狀態== 1和天應該從用戶的值的列C的第二次出現的相減 - 值塔B的第一用戶
- 外觀如果用戶第二次出現具有數!= 1,狀態== 0和天==一些預定數量
- 從數據集刪除用戶沒有數字== 0
我問這個問題,因爲我是一個有點困惑做到這一點的最好辦法。我雖然關於子集的數據框在數字== 0,然後比較用戶之間的數據幀看到重複的用戶,但也許這不是最好的辦法做到這一點。
任何指針和想法將是巨大的!
謝謝您的幫助
編輯
columnB是因爲 '2002-01-01' 已經過去的天數。例如,第一用戶在數據幀85後的天2002-01-01
進入columnC是用戶停留在觀察的天數。在那些日子之後,用戶不再在數據庫中。
EDIT2
我的數據集有36列和26075rows
一些建議,哪裏就是我到目前爲止之後。
#remove from dataset all users that don't have number == 0
df1 <- df[df$user %in% df[df$number == 0,1],]
df1["Status"] <- 0
#doesn't work
df1[df1$number == 1 %in% df1[duplicated(df1$user),]]
什麼,我試圖做的是找到所有重複的用戶,如果數等於1。要嘗試這樣算賬:
df1[df1$number == 1 %in% df1[duplicated(df1$user),]] <- df1$Status == 1
'days'從哪裏來? ..「一些預定義的數字」不能幫助我們幫助你...並且你的數據是否總是按用戶和數字升序排序? :) –
你可以寫出一個功能,爲一個用戶做你想做的事,然後使用ddply在所有用戶上運行這個功能。 – EDi
我不認識別人,但是我發現很難從你的例子和描述中理解你真正想要的。例如什麼是列「C」或「B」? –