【发布时间】:2015-11-28 16:52:33
【问题描述】:
我正在尝试研究如何根据它们在时间序列中的位置将因子水平拆分为新的水平。
拿一些玩具数据:
Time <- c(1:18)
Factor <- as.factor(c(1,1,1,2,2,2,3,3,3,1,1,1,2,2,2,3,3,3))
Value <- c(rnorm(18))
df <- data.frame(Time, Factor, Value)
str(df)
'data.frame': 18 obs. of 3 variables:
$ Time : int 1 2 3 4 5 6 7 8 9 10 ...
$ Factor: Factor w/ 3 levels "1","2","3": 1 1 1 2 2 2 3 3 3 1 ...
$ Value : num -0.728 -0.715 1.771 -0.54 -0.433 ...
有了这个数据,变量因子是一个具有 3 个水平的因子。我想根据时间序列中的出现来拆分级别。因此,第一次出现因素 1 块时,我想将其重命名为 1.1、1.1、1.1,第二次出现时,我想将其重命名为 1.2、1.2、1.2 等。
任何人都可以建议这样做的方法吗?
可能真实数据有一个变量MIU_VALVE,这是一个包含 13 个级别的因素,我不会对其应用任何建议。这是我的真实数据的结构:
str(data1)
'data.frame': 85874 obs. of 19 variables:
$ Time : POSIXct, format: "2015-06-08 09:55:48" "2015-06-08 09:55:48" "2015-06-08 09:55:49" "2015-06-08 09:55:50" ...
$ [N2O]_ppm : num 0.333 0.333 0.334 0.333 0.333 ...
$ d15NA : num -17.9 -41.1 -49 -32.4 -29.2 ...
$ d15NB : num -28.4 -56.7 -21.2 -61.3 -59.7 ...
$ d18O : num -337 -291 -287 -284 -304 ...
$ d15N : num -23.2 -48.9 -35.1 -46.8 -44.4 ...
$ SP : num 10.5 15.6 -27.8 28.9 30.5 ...
$ [NNO]_ppm : num 0.328 0.328 0.328 0.328 0.328 ...
$ [NN15O]_ppm: num 0.00238 0.00233 0.00231 0.00235 0.00236 ...
$ [N15NO]_ppm: num 0.00236 0.00229 0.00238 0.00228 0.00228 ...
$ [NNO18]_ppm: num 0.000435 0.000466 0.000469 0.000471 0.000457 ...
$ [H2O]_ppm : num 33880 33817 34059 33714 33399 ...
$ GasP_torr : num 45.4 45.4 45.4 45.4 45.4 ...
$ GasT_C : num 41.3 41.3 41.3 41.3 41.3 ...
$ AmbT_C : num 42.2 42.2 42.2 42.2 42.2 ...
$ LTC0_v : num 0.0434 0.0434 0.0434 0.0434 0.0434 ...
$ AIN6 : num 1.16 1.16 1.16 1.16 1.16 ...
$ DetOff : num 1.13 1.13 1.13 1.13 1.13 ...
$ MIU_VALVE : Factor w/ 13 levels "1","2","3","4",..: 2 2 2 2 2 2 2 2 2 2 ...
【问题讨论】: