如何在R中的data.frame中查找更高的值

时间:2015-02-14 14:34:35

标签: r

我有一个时间序列data.frame,其中所有值都低于彼此。但是在每个日期都会有更多的案例经常回归。根据时间序列,我添加了一些带有一些计算的列。这些计算是针对具体情况完成的。但是对于这些计算,我需要该案例的前一个日期的值。我现在知道要使用哪个功能。任何人都可以指点我网上的某个功能或示例吗?谢谢!

要清楚,这就是我的意思。在日期1,案例'a'的旧值(在得分之前)是1200.基于得分1,新值变为1250.在日期2,我希望将该新值1250放置在列'旧值'中(并且要进行一些计算以获得新值,新值必须在日期4左右再次放入de column旧值等等)。对于案例B相同。因此,在日期1之后得分的新值是1190,并且必须在第3天(在日期2,现在是案例B)处于正确的行中,等等于1000个案例和日期。

date    name_case   score   old_value   new_value
1       a           1       1200        1250
1       b           2       1275        1190
1       c           1       1300        1310
2       a           3       1250    
2       c           1       1310    
3       B           1       1190

1 个答案:

答案 0 :(得分:0)

也许会这样做。假设我们从:

开始
> dat
  date name_case score old_value new_value
1    1         a     1      1200      1250
2    1         b     2      1275      1190
3    1         c     1      1300      1310
4    2         a     3        NA        NA
5    2         c     1        NA        NA
6    3         b     1        NA        NA   # note ... fixed cap issue

然后使用new_value的值创建一个子集:

dat1 <- dat[ !is.na(dat$old_value), ]

然后在new_values的{​​{1}}

上用match替换NA old_values与name_case的结果
dat[ is.na(dat$old_value) , "old_value" ] <- 
          dat1$new_value[  match(dat[ !is.na(dat$old_value) ,"name_case" ], 
                                 dat1$name_case)]

match生成一个数字向量,用于索引new_values

> dat
  date name_case score old_value new_value
1    1         a     1      1200      1250
2    1         b     2      1275      1190
3    1         c     1      1300      1310
4    2         a     3      1250        NA
5    2         c     1      1190        NA
6    3         B     1      1310        NA