我有一组看起来像这样的数据:
Date boolean
407 2006-06-01 1
408 2006-06-02 1
409 2006-06-03 1
410 2006-06-04 NA
411 2006-06-05 0
412 2006-06-06 1
413 2006-06-07 1
414 2006-06-08 0
415 2006-06-09 1
Run Code Online (Sandbox Code Playgroud)
由此,我试图创建一个新的数据框,该数据框将使用列标题显示1运行的日期以及运行的时间,并带有列标题:1)开始日期,2)结束日期和3)运行时间。
最终,我想从上面的数据创建一个看起来像这样的数据框:
Start Date End Date Length of Run
1 2006-06-01 2006-06-03 3
2 2006-06-06 2006-06-07 2
Run Code Online (Sandbox Code Playgroud)
我的数据中也有一些NA,在整个数据中也需要忽略。
我想根据“日期”列扩展数据框,以便在当前日期之间按时间顺序出现新的日期行。我的“日期”列是按时间顺序排列的,跨度为 5 年,并且包含我想忽略的重复日期。我希望新行的相应 Group 和 Draw 行为“NA”。
zz <- "Date Group Draw
1 2006-05-11 bb T
2 2006-05-11 bb F
3 2006-05-14 aa T
4 2006-05-16 aa T
5 2006-05-20 cc F
6 2006-05-20 bb F
7 2006-05-21 aa T"
Data <- read.table(text=zz, header = TRUE)
Run Code Online (Sandbox Code Playgroud)
所以我希望我的新数据框看起来像这样:
xx <- "Date Group Draw
1 2006-05-11 bb T
2 2006-05-11 bb F
3 2006-05-12 NA NA
4 2006-05-13 NA NA
5 2006-05-14 aa T
6 2006-05-15 NA NA
7 2006-05-16 aa T …Run Code Online (Sandbox Code Playgroud) 如果我有像mtcars这样的示例数据框,并且我想找到所有行的mtcars $ qsec之间的差异,我可以做diff(mtcars $ qsec).但有没有一种简单的方法可以使diff(mtcars $ qsec)成为原始mtcars数据框中的新列?我发现它很困难,因为diff(mtcars $ qsec)中的行少于其他mtcars.
> head(mtcars,3)
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
Run Code Online (Sandbox Code Playgroud)