我有一个像下面这样的data.frame
Values
1 16.50
2 16.53
3 16.48
4 16.38
5 16.16
6 16.10
7 16.21
8 16.50
Run Code Online (Sandbox Code Playgroud)
我需要创建一个新的数据框,对于每个值,包含同一行中的前2条记录,例如:
line #1: 16.50, 16.53, 16.48
line #2: 16.53, 16.48, 16.38
Run Code Online (Sandbox Code Playgroud)
您对如何实现结果有任何建议吗?
先感谢您.
尝试
library(dplyr)
df %>%
mutate(Col1=lead(Values,1), Col2=lead(Values,2))
# Values Col1 Col2
#1 16.50 16.53 16.48
#2 16.53 16.48 16.38
#3 16.48 16.38 16.16
#4 16.38 16.16 16.10
#5 16.16 16.10 16.21
#6 16.10 16.21 16.50
#7 16.21 16.50 NA
#8 16.50 NA NA
Run Code Online (Sandbox Code Playgroud)
或者你可以试试
n <- 3
m1 <- matrix(df$Values, nrow=nrow(df)+1, ncol=n)[-nrow(df)+1,]
m1
# [,1] [,2] [,3]
#[1,] 16.50 16.53 16.48
#[2,] 16.53 16.48 16.38
#[3,] 16.48 16.38 16.16
#[4,] 16.38 16.16 16.10
#[5,] 16.16 16.10 16.21
#[6,] 16.10 16.21 16.50
#[7,] 16.50 16.50 16.53
#[8,] 16.50 16.53 16.48
Run Code Online (Sandbox Code Playgroud)
df <- structure(list(Values = c(16.5, 16.53, 16.48, 16.38, 16.16, 16.1,
16.21, 16.5)), .Names = "Values", class = "data.frame", row.names = c("1",
"2", "3", "4", "5", "6", "7", "8"))
Run Code Online (Sandbox Code Playgroud)
您可以使用embed基本R中的函数:
embed(DF$Values, 3L)[, 3:1]
# [,1] [,2] [,3]
# [1,] 16.50 16.53 16.48
# [2,] 16.53 16.48 16.38
# [3,] 16.48 16.38 16.16
# [4,] 16.38 16.16 16.10
# [5,] 16.16 16.10 16.21
# [6,] 16.10 16.21 16.50
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
90 次 |
| 最近记录: |