如何从r中减去其他行?

时间:2015-08-28 09:11:53

标签: r

我有一个包含许多列和行的数据帧,我需要为每列减去 来自其他行的第一行。

C1 C2 C3
3  7   9
4  9   4
7  6  11
9  4   8

2 个答案:

答案 0 :(得分:6)

您实际上可以直接减去,但您需要将第一行设为list

mydf - as.list(mydf[1, ])
#   C1 C2 C3
# 1  0  0  0
# 2  1  2 -5
# 3  4 -1  2
# 4  6 -3 -1

## OR
mydf - c(mydf[1, ])

答案 1 :(得分:2)

我们可以复制第一行来创建相同的长度然后做差异。

 df1-df1[1,][col(df1)]
 #  C1 C2 C3
 #1  0  0  0
 #2  1  2 -5
 #3  4 -1  2
 #4  6 -3 -1

或者另一种选择是转置(t)数据集,获得差异并再次转置它,这可能效率较低

t(t(df1)- unlist(df1[1,]))
#     C1 C2 C3
#[1,]  0  0  0
#[2,]  1  2 -5
#[3,]  4 -1  2
#[4,]  6 -3 -1