尝试XTABSH():
sampleDT <- data.frame(Old = c("A","B","A","B","A","B","A","B"),
New = c("A","A","B","B","A","A","B","B"),
Time = c(1,1,1,1,2,2,2,2),
value1 = c(1,1,1,1,1,1,1,1),
value2 = c(0,0,0,0,0,0,0,0))
Value1 <- xtabs(value1 ~ Old + New + Time, sampleDT, drop = FALSE)
Value2 <- xtabs(value2 ~ Old + New + Time, sampleDT, drop = FALSE)
is.array(Value1)
is.array(Value2)
Value1[, 2,] <- 0 # Sets all second columns to zero for Value1
Value2[1,,] <- 0 # Idem with first row for Value2
Value2[2,2,] <- Value2[2,2,] * (-1)
Result <- Value1 + Value2
Result
, , Time = 1
New
Old A B
A 1 0
B 1 0
, , Time = 2
New
Old A B
A 1 0
B 1 0
希望它有帮助。