我有一个包含许多列和行的数据帧,我需要为每列减去 来自其他行的第一行。
C1 C2 C3
3 7 9
4 9 4
7 6 11
9 4 8
答案 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