我正在尋找一種能夠高效生成下面顯示的輸出的R解決方案。我可以很容易地在SAS中使用保留語句和幾行if-then-else邏輯等產生這些信息,但我在Rforum或本網站的存檔中找不到類似 。以下是我試圖應用於生成以下輸出表的邏輯。 謝謝你的幫助!使用R創建2個新變量,條件是保留先前行的值
如果ID是遇到的第一個ID,那麼group = 1和groupdate = date或否則如果不是first ID和date--上一個日期> 10或日期 - previous group date> 10 then group = previous group#+ 1和groupdate =日期或如果不是第一個ID和日期 - 前一個日期< = 10或日期 - 前一個羣組日期< = 10然後group =前一個group#和groupdate =前一個日期。
輸入:
ID DATE ITEM
1 1/1/2014 P1
1 1/15/2014 P2
1 1/20/2014 P3
1 1/22/2014 P4
1 3/10/2015 P5
2 1/13/2015 P1
2 1/20/2015 P2
2 1/28/2015 P3
2 2/28/2015 P4
2 3/20/2015 P5
所需的輸出
ID DATE ITEM GROUP GROUPDATE
1 1/1/2014 P1 1 1/1/2014
1 1/15/2014 P2 2 1/15/2014
1 1/20/2014 P3 2 1/15/2014
1 1/22/2014 P4 2 1/15/2014
1 3/10/2015 P5 3 3/10/2015
2 1/13/2015 P1 1 1/13/2015
2 1/20/2015 P2 1 1/13/2015
2 1/28/2015 P3 2 1/28/2015
2 2/28/2015 P4 3 2/28/2015
2 3/20/2015 P5 4 3/20/2015
請檢查GROUP 2的ID。這沒什麼意義。 – akrun
我寫出的前哨表是正確的。問題出在我的邏輯 - 我省略了一小部分,因此我現在更新..下面是正確的邏輯。 – Pele
如果ID是遇到的第一個ID,那麼group = 1和groupdate = date或者如果不是第一個ID和日期 - 先前日期> 10或日期 - 先前的組日期> 10然後group = previous group#+ 1和groupdate = date否則如果不是第一個ID和日期 - 前一個日期<= 10或日期 - 前一個組日期<= 10那麼group =前一個組#和groupdate =前一個日期。 – Pele