1
我有一個數據框,包含2177個觀察值和44個值。其中一行特別感興趣,因爲我想自己減去這些行的值,因此該行將爲零。與此同時,我用於操作的那些行的值也需要從所有其他行中減去,並創建一個新的數據框。我不確定如何做到這一點。以下是我迄今爲止,但它不工作:從整個數據框中減去行值
NewDataFrame <- OldData[2:44] - OldData[519,]
我有一個數據框,包含2177個觀察值和44個值。其中一行特別感興趣,因爲我想自己減去這些行的值,因此該行將爲零。與此同時,我用於操作的那些行的值也需要從所有其他行中減去,並創建一個新的數據框。我不確定如何做到這一點。以下是我迄今爲止,但它不工作:從整個數據框中減去行值
NewDataFrame <- OldData[2:44] - OldData[519,]
我認爲這樣做最簡單的方法是通過sweep()
,但將需要強迫一個矩陣。一些示例性的數據第一:
df <- data.frame(A = 1:10, B = 10:1, C = 21:30)
這裏是sweep()
版本
m <- data.matrix(df)
sweep(m, 2, m[5, ])
R> sweep(m, 2, m[5, ])
A B C
[1,] -4 4 -4
[2,] -3 3 -3
[3,] -2 2 -2
[4,] -1 1 -1
[5,] 0 0 0
[6,] 1 -1 1
[7,] 2 -2 2
[8,] 3 -3 3
[9,] 4 -4 4
[10,] 5 -5 5
也可以做到這一點使用-
,但由於渠道 - 治療的矩陣(與尺寸的載體,以及填充按列),你需要做的m
有些變調:
t(t(m) - m[5, ])
R> t(t(m) - m[5, ])
A B C
[1,] -4 4 -4
[2,] -3 3 -3
[3,] -2 2 -2
[4,] -1 1 -1
[5,] 0 0 0
[6,] 1 -1 1
[7,] 2 -2 2
[8,] 3 -3 3
[9,] 4 -4 4
[10,] 5 -5 5
完美掃描工作。謝謝! – GK89
看'sweep' ... –
@BenBolker'sweep'需要一個矩陣,其中第變得複雜有一點... –