繁体   English   中英

根据另一列中不同行中的值创建数据框或tibble

[英]create a dataframe or tibble based on values in different rows in another column

我有一列这样的事件时间偏移(ms)(但更大)

> ts_data = tibble( t = c(34, 78, 111, 165, 189))
> ts_data
# A tibble: 5 x 1
      t
  <dbl>
1    34
2    78
3   111
4   165
5   189

我想创建第二列,其中每行的值是当前行和前一行之间的差异(假设开始时t = 0)。 所以(手动)对于上面的数据我想最终得到这个..

> add_column(ts_data, t_int = c(34, 44, 33, 54, 24))
# A tibble: 5 x 2
      t t_int
  <dbl> <dbl>
1    34    34
2    78    44
3   111    33
4   165    54
5   189    24

即44 = 78-34; 33 = 111-78,......

我可以用循环做一些事情,但有点期待可能有一种更简洁的方式使用相对索引,但是我对日期的追求尚未见效。

任何指针将不胜感激:-)

用更容易的选择diff它返回一个vectorlength少一个比原来的vector (或列)。 因此,附加't'的first值来创建与原始列相等的length

library(dplyr)
ts_data %>% 
   mutate(t_int = c(first(t), diff(t)))
# A tibble: 5 x 2
#      t t_int
#  <dbl> <dbl>
#1    34    34
#2    78    44
#3   111    33
#4   165    54
#5   189    24

或者将原始列的差异与列的lag指定为default 0(默认情况下为NA

ts_data %>%
      mutate(t_int = t - lag(t, default = 0))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM