查找相同data.frame的每一行对的差异
我想计算每两行的差值。e、 g.第一从第二,第三从第四等查找相同data.frame的每一行对的差异,r,R,我想计算每两行的差值。e、 g.第一从第二,第三从第四等 假设我有x你应该把向量变成一个2行数组,然后使用diff来计算行之间的差异,在这种情况下,这将是第二行和第一行之间的差异,因为只有两行 > v <- c(1,3,4,7) > v [1] 1 3 4 7 > m <- matrix(v, nrow = 2) > m [,1] [,2] [1,] 1 4 [2,] 3 7 > diff(m) [,1] [,
假设我有
x你应该把向量变成一个2行数组,然后使用diff
来计算行之间的差异,在这种情况下,这将是第二行和第一行之间的差异,因为只有两行
> v <- c(1,3,4,7)
> v
[1] 1 3 4 7
> m <- matrix(v, nrow = 2)
> m
[,1] [,2]
[1,] 1 4
[2,] 3 7
> diff(m)
[,1] [,2]
[1,] 2 3
使用iris
数据集显示的示例。使用lappy()
函数在数据帧上执行。对于连续行之间的差异,请使用diff()
,然后提取每个可选差异
输入
df2 <- head(iris[,1:4])
df2
# Sepal.Length Sepal.Width Petal.Length Petal.Width
# 1 5.1 3.5 1.4 0.2
# 2 4.9 3.0 1.4 0.2
# 3 4.7 3.2 1.3 0.2
# 4 4.6 3.1 1.5 0.2
# 5 5.0 3.6 1.4 0.2
# 6 5.4 3.9 1.7 0.4
所需输出
df2 <- head(iris[,1:4])
df2
# Sepal.Length Sepal.Width Petal.Length Petal.Width
# 1 5.1 3.5 1.4 0.2
# 2 4.9 3.0 1.4 0.2
# 3 4.7 3.2 1.3 0.2
# 4 4.6 3.1 1.5 0.2
# 5 5.0 3.6 1.4 0.2
# 6 5.4 3.9 1.7 0.4
第2行和第1行的差异,第4行和第3行的差异,以及
第6行和第5行的差异
data.frame(lapply(df2, function(x) diff(x)))[seq(1, nrow(df2), by = 2),]
# Sepal.Length Sepal.Width Petal.Length Petal.Width
# 1 -0.2 -0.5 0.0 0.0
# 3 -0.1 -0.1 0.2 0.0
# 5 0.4 0.3 0.3 0.2
你可以做diff(x)[c(真,假)]
@Sotos非常感谢。特殊的解决方法。另外,x[c(假,真)]-x[c(真,假)]
。
data.frame(lapply(df2, function(x) diff(x)))[seq(1, nrow(df2), by = 2),]
# Sepal.Length Sepal.Width Petal.Length Petal.Width
# 1 -0.2 -0.5 0.0 0.0
# 3 -0.1 -0.1 0.2 0.0
# 5 0.4 0.3 0.3 0.2