计算特定因子后的因子

时间:2016-07-14 17:09:36

标签: r count

我有一个数据集,包括活动a,b和c,如下所示;

User-ID    Date            Activity       Number of activity
1       03.04.2014         a              3
1       04.04.2014         c              2
2       05.06.2014         a              3
1       12.06.2014         b              2
1       06.10.2014         b              1
3       10.11.2014         a              3
1       05.11.2014         c              2
1       06.12.2014         a              1
2       06.12.2014         b              3
2       07.12.2014         a              4
2       07.12.2014         c              2
2       08.12.2014         a              1
3       08.12.2014         b              3

我想编写一个代码,显示自上次活动a以来每个用户的活动总数cb。例如;用户ID:1有活动" a"和" c&#34 ;;活动b后共计3次。 如何计算指定因子后的活动数量? (在这里:自上次" b")

预期结果: 用户ID:1总活动:3 用户ID:2总活动:7 用户ID:3总活动:0

1 个答案:

答案 0 :(得分:0)

首先,尽量不要使用包含空格或连字符的变量名,除非你想遇到各种各样的问题。

df <- read.table(text='
User.ID    Date            Activity       Number.of.activity
1       03.04.2014         a              3
1       04.04.2014         c              2
2       05.06.2014         a              3
1       12.06.2014         b              2
1       06.10.2014         b              1
3       10.11.2014         a              3
1       05.11.2014         c              2
1       06.12.2014         a              1
', header=T)

其次,如果您使用日期,则使用适当的数据类型以便进行比较非常重要。

df$Date <- as.Date(as.character(df$Date), format='%d.%m.%Y')

现在,您可以为最后一个'b'获取除'b'之外的其他活动的数量:

sapply(split(df, df$User.ID), function(x)
    sum((x$Date > tail(sort(x$Date[x$Activity == 'b']), 1)) &
        (x$Activity != 'b')))
#1 2 3 
#2 0 0