如果我有像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)
这有两种方法.两者都放在NA第一行diff_qsec并放入diff(qsec)剩余的行:
library(dplyr)
mtcars %>% mutate(diff_qsec = qsec - lag(qsec)) # dplyr has its own version of lag
transform(mtcars, diff_qsec = c(NA, diff(qsec)))
Run Code Online (Sandbox Code Playgroud)
另外,关于填充的一般问题请参阅:如何从前面填充带有NA的向量?
| 归档时间: |
|
| 查看次数: |
2741 次 |
| 最近记录: |