这就是我的数据:
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
答案 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
来开始滚动)。