簡體   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