[英]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.