R 使用简单代码排序

R sorting using simple codes

有人可以帮我解决以下问题吗?

数据集示例:

Ticketid    Creation_Date   Location    Person
a1  01-02-2015  A   John
b1  03-02-2015  B   Jack
c1  03-02-2015  C   Mint
a1  03-02-2015  D   Manu
d1  03-02-2015  A   Somu
e1  03-02-2015  A   John
b1  11-02-2015  B   Jack
a1  11-02-2015  C   Mint
b1  14-02-2015  F   John
b1  27-02-2015  E   John

问题:

1.Remove重复的Ticketid是这样过滤的 ->创建日期距第一次出现日期不到 7 天。 例如:对于工单 ID,"a1",有 3 个创建日期,即“01-02-2015,03-02-2015,11-02-2015”,我想要一个新列 "repeat flag" 并将在本例中第一次出现的 01-02-2015 标记为是。因为第二次发生在第一次发生后的 7 天内。

2.By以上逻辑,

                ->I want to filter by Location(Ticketid,creationdate)
                ->I want to filter by Person(Ticketid,creationdate)

代码:

t.first <- eg1[匹配(唯一(eg1$Ticketid),eg1$Ticketid),]

如何在相同的 excel sheet 中保存输出并为发生超过 1 个事件的 locations/engineers 进行条件格式化?

我尝试的代码太基础了,提前请求别人的帮助asap.Thanks。

更好地阐明查询的附加组件:

输入:

Ticketid Creation_Date Location Person Partused deviceused

a1  01-02-2015  A   John    Monitor     Model1
b1  03-02-2015  B   Jack    Keyboard    Model2
c1  03-02-2015  C   Mint    cable       Model3
a1  03-02-2015  D   Manu    Monitor     Model1
d1  03-02-2015  A   Somu    Motherboard Model2
e1  03-02-2015  A   John    Motherboard Model2
b1  11-02-2015  B   Jack    cable       Model2
a1  11-02-2015  C   Mint    Keyboard    Model3
b1  14-02-2015  F   John    Motherboard Model1
b1  27-02-2015  E   John    Motherboard Model3

我希望我的输出格式如下 table:

重复标志现在有很多conditions:for如果唯一的条件是第二次订单是否在第一次订单的7天内创建,如a1.

每个工单 ID 的首次创建日期不同。

Answer1:**Location  RepeatFlag  Model1  Model2  Model3**

Answer2:**Location  Person  RepeatFlag  Model1  Model2  Model3**

Answer3:**Location  PartsUsed   RepeatFlag  Model1  Model2  Model3**

注意:这只是动态更改不同行的示例。因此,请分享一个满足任何类型输入的代码提示,因为我希望这是一个自动化过程,一旦数据在源中刷新(excel sheet).

请说明我们如何将其自动化。

感谢支持provided.Much感激不尽

此致, VK

据我了解你的问题:

df <- data.frame(Ticketid = c('a1','b1','c1','a1','d1','e1','b1','a1','b1','b1'), 
Creation_Date = as.Date(c('01-02-2015','03-02-2015','03-02-2015','03-02-2015','03-02-2015','03-02-2015','11-02-2015','11-02-2015','14-02-2015','27-02-2015'), format = '%d-%m-%Y'), 
Location = c('A','B','C','D','A','A','B','C','F','E'), 
Person = c('John','Jack','Mint','Manu', 'Somu','John', 'Jack', 'Mint','John','John') )

   Ticketid Creation_Date Location Person
1        a1    2015-02-01        A   John
2        b1    2015-02-03        B   Jack
3        c1    2015-02-03        C   Mint
4        a1    2015-02-03        D   Manu
5        d1    2015-02-03        A   Somu
6        e1    2015-02-03        A   John
7        b1    2015-02-11        B   Jack
8        a1    2015-02-11        C   Mint
9        b1    2015-02-14        F   John
10       b1    2015-02-27        E   John

library(dplyr)

first_creation <- df %>% 
select(Ticketid,First_Date = Creation_Date) %>% 
group_by(Ticketid) %>% 
slice(1) %>% 
ungroup()

df2 <- merge(first_creation,df, all.y = T, by = 'Ticketid')

df3 <- df2 %>% mutate(time_diff = Creation_Date - First_Date)


df_flagged <- df3 %>% group_by(Ticketid) %>% mutate(Within_7 = ifelse(time_diff > 7 | time_diff == 0, 'NO','YES'))

    Source: local data frame [10 x 7]
Groups: Ticketid

   Ticketid First_Date Creation_Date Location Person time_diff Within_7
1        a1 2015-02-01    2015-02-01        A   John    0 days       NO
2        a1 2015-02-01    2015-02-03        D   Manu    2 days      YES
3        a1 2015-02-01    2015-02-11        C   Mint   10 days       NO
4        b1 2015-02-03    2015-02-03        B   Jack    0 days       NO
5        b1 2015-02-03    2015-02-11        B   Jack    8 days       NO
6        b1 2015-02-03    2015-02-14        F   John   11 days       NO
7        b1 2015-02-03    2015-02-27        E   John   24 days       NO
8        c1 2015-02-03    2015-02-03        C   Mint    0 days       NO
9        d1 2015-02-03    2015-02-03        A   Somu    0 days       NO
10       e1 2015-02-03    2015-02-03        A   John    0 days       NO