创建虚拟变量

时间:2013-08-22 08:17:31

标签: r

这就是我的数据:

         Attribute        Time     V1 V2 V3 V4
1 pmEulRlcUserPacketThp 2013-04-30 12 51 34 17
2 pmEulRlcUserPacketThp 2013-04-30 84 28 17 10
3 pmEulRlcUserPacketThp 2013-04-30 11 43 28 15
4 pmEulRlcUserPacketThp 2013-04-30 80 26 17 91
5 pmEulRlcUserPacketThp 2013-04-26 10 41 25 13
6 pmEulRlcUserPacketThp 2013-04-25 97 35 23 12

我想创建一个虚拟列“t”,当日期相似时创建相同的值,例如,2013-04-30为1,2013年2月26日为2,2013年4月25日为3。它的大量数据因此如果手工较少会有所帮助。我需要的数据如下:

         Attribute        Time     t V1 V2 V3 V4
1 pmEulRlcUserPacketThp 2013-04-30 1 12 51 34 17
2 pmEulRlcUserPacketThp 2013-04-30 1 84 28 17 10
3 pmEulRlcUserPacketThp 2013-04-30 1 11 43 28 15
4 pmEulRlcUserPacketThp 2013-04-30 1 80 26 17 91
5 pmEulRlcUserPacketThp 2013-04-26 2 10 41 25 13
6 pmEulRlcUserPacketThp 2013-04-25 3 97 35 23 12

2 个答案:

答案 0 :(得分:2)

假设您的data.frame名为dfr,请尝试:

dfr$t <- as.numeric(as.factor(dfr$Time))

答案 1 :(得分:0)

我不知道你是在寻找as.factor,还是需要某种连续日期的累积计数,在这种情况下你可以这样做......

df$t <- cumsum( c( 1 , ! head(df$Time,-1) == tail(df$Time,-1) ) )

#              Attribute       Time V1 V2 V3 V4 t
#1 pmEulRlcUserPacketThp 2013-04-30 12 51 34 17 1
#2 pmEulRlcUserPacketThp 2013-04-30 84 28 17 10 1
#3 pmEulRlcUserPacketThp 2013-04-30 11 43 28 15 1
#4 pmEulRlcUserPacketThp 2013-04-30 80 26 17 91 1
#5 pmEulRlcUserPacketThp 2013-04-26 10 41 25 13 2
#6 pmEulRlcUserPacketThp 2013-04-25 97 35 23 12 3

我们将Time列的连续值相互比较,看它们是否相同。使用!运算符,如果它们相同则为FALSE,如果它们不同则为TRUE。然后我们可以cumsum来获得结果(使用初始1来开始滚动)。