我希望用前一列中的值减去每个连续的列。
列表
A B C D E
1 2 3 4 6
2 2 2 3 NA
3 4 5 NA NA
1 NA NA 2 4
结果
1 1 1 2
0 0 1 NA
1 1 NA NA
NA NA NA 2
我可以通过列绑定列中的所有结果as.matrix((ifelse(!is.na(List[,1])&!is.na(List[,2], List[,2]-List[,1], "NA")))
来实现,但这看起来非常繁琐。
有更快的方法吗?
对于List
中最后一个车道的情况,我如何获得两个值(D列 - A列)之间的差值除以它们之间的间隔(3个间隔)?因此,我们不是Result
,而是:
Alt_result
1 1 1 2
0 0 1 NA
1 1 NA NA
NA NA 0.333 2
答案 0 :(得分:2)
我们通过删除最后一列[-ncol(d1)]
和第一列[-1]
来对数据集进行子集化,然后减去那些大小相同的数据集,以便每个列都会被前面的列减去。
abs(d1[-ncol(d1)]- d1[-1])
# A B C D
#1 1 1 1 2
#2 0 0 1 NA
#3 1 1 NA NA
#4 NA NA NA 2
答案 1 :(得分:2)
也可以通过明确应用diff
功能
t(apply(df,1,diff))
# B C D E
#[1,] 1 1 1 2
#[2,] 0 0 1 NA
#[3,] 1 1 NA NA
#[4,] NA NA NA 2