[英]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
它返回一个vector
的length
少一个比原来的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.