如何查找具有相同colnames/rownames的行的值之间的差异?

如何查找具有相同colnames/rownames的行的值之间的差异?,r,diff,R,Diff,我想找出每组2个组合之间的差异,按列A分组 setDT(df)[, combn(B, 2, diff), by = A] # A V1 # 1: 11 5398914 # 2: 6 1126 # 3: 6 1131 # 4: 6 5 setDT(df)[, { cmb <- combn(B, 2) .(B = cmb[1, ], C = cmb[2, ], Diff = cmb[2, ] - cmb[1, ]) }, by

我想找出每组2个组合之间的差异,按列
A
分组

setDT(df)[, combn(B, 2, diff), by = A]
#     A      V1
# 1: 11 5398914
# 2:  6    1126
# 3:  6    1131
# 4:  6       5
setDT(df)[, {
    cmb <- combn(B, 2)
    .(B = cmb[1, ], C = cmb[2, ], Diff = cmb[2, ] - cmb[1, ])
}, by = A]
#     A        B        C    Diff
# 1: 11   320836  5719750 5398914
# 2:  6 29911154 29912280    1126
# 3:  6 29911154 29912285    1131
# 4:  6 29912280 29912285       5
输入数据:

 A        B
11   320836
11  5719750
 6 29911154
 6 29912280
 6 29912285    
以下是预期产出:

 A        B          C  Difference
11   320836    5719750     5398914
 6 29911154   29912280        1126
 6 29911154   29912285        1131
 6 29912280   29912285           5

以下是使用combn的dplyr选项:

   df <- read.table(textConnection("
                            A   B
                            11 320836
                            11 5719750
                            6 29911154
                            6 29912280
                            6 29912285  "),header=TRUE)

 library(dplyr)
 df2 <- 
 as.data.frame(df %>% 
 group_by(A) %>% 
 do(as.data.frame(t(combn(.[["B"]], 2)))))
 df2$diff <- df2$V2-df2$V1 
df%
do(如.data.frame(t(combn([[B]”),2‘‘‘‘)’)

df2$diff这里有一个使用combn的dplyr选项:

   df <- read.table(textConnection("
                            A   B
                            11 320836
                            11 5719750
                            6 29911154
                            6 29912280
                            6 29912285  "),header=TRUE)

 library(dplyr)
 df2 <- 
 as.data.frame(df %>% 
 group_by(A) %>% 
 do(as.data.frame(t(combn(.[["B"]], 2)))))
 df2$diff <- df2$V2-df2$V1 
df%
do(如.data.frame(t(combn([[B]”),2‘‘‘‘)’)

df2$diff这里是data.table包的一种可能性

library(data.table)
我们可以使用
diff()
内部
combn()
,按
A
分组,快速计算差异

setDT(df)[, combn(B, 2, diff), by = A]
#     A      V1
# 1: 11 5398914
# 2:  6    1126
# 3:  6    1131
# 4:  6       5
setDT(df)[, {
    cmb <- combn(B, 2)
    .(B = cmb[1, ], C = cmb[2, ], Diff = cmb[2, ] - cmb[1, ])
}, by = A]
#     A        B        C    Diff
# 1: 11   320836  5719750 5398914
# 2:  6 29911154 29912280    1126
# 3:  6 29911154 29912285    1131
# 4:  6 29912280 29912285       5
要获得所有需要的列,我们可以做更多的工作。
combn()
函数可用于获取两个元素的组合。然后,我们可以根据
combn()
的结果为三个新列创建一个命名列表。所有这些都按
A
分组

setDT(df)[, combn(B, 2, diff), by = A]
#     A      V1
# 1: 11 5398914
# 2:  6    1126
# 3:  6    1131
# 4:  6       5
setDT(df)[, {
    cmb <- combn(B, 2)
    .(B = cmb[1, ], C = cmb[2, ], Diff = cmb[2, ] - cmb[1, ])
}, by = A]
#     A        B        C    Diff
# 1: 11   320836  5719750 5398914
# 2:  6 29911154 29912280    1126
# 3:  6 29911154 29912285    1131
# 4:  6 29912280 29912285       5
setDT(df)[{

cmb这里是data.table包的一种可能性

library(data.table)
我们可以使用
diff()
内部
combn()
,按
A
分组,快速计算差异

setDT(df)[, combn(B, 2, diff), by = A]
#     A      V1
# 1: 11 5398914
# 2:  6    1126
# 3:  6    1131
# 4:  6       5
setDT(df)[, {
    cmb <- combn(B, 2)
    .(B = cmb[1, ], C = cmb[2, ], Diff = cmb[2, ] - cmb[1, ])
}, by = A]
#     A        B        C    Diff
# 1: 11   320836  5719750 5398914
# 2:  6 29911154 29912280    1126
# 3:  6 29911154 29912285    1131
# 4:  6 29912280 29912285       5
要获得所有需要的列,我们可以做更多的工作。
combn()
函数可用于获取两个元素的组合。然后我们可以根据
combn()
的结果为三个新列创建命名列表。所有这些都按
a
分组

setDT(df)[, combn(B, 2, diff), by = A]
#     A      V1
# 1: 11 5398914
# 2:  6    1126
# 3:  6    1131
# 4:  6       5
setDT(df)[, {
    cmb <- combn(B, 2)
    .(B = cmb[1, ], C = cmb[2, ], Diff = cmb[2, ] - cmb[1, ])
}, by = A]
#     A        B        C    Diff
# 1: 11   320836  5719750 5398914
# 2:  6 29911154 29912280    1126
# 3:  6 29911154 29912285    1131
# 4:  6 29912280 29912285       5
setDT(df)[{

cmb我相信他们希望按组返回所有差异组合,因此1131是从第三行减去最后一行得出的。我相信他们希望按组返回所有差异组合,因此1131是从第三行减去最后一行得出的。非常感谢。这在我的示例中效果很好,但当我尝试在我的整个数据面上使用此错误:t中的错误(combn([[B]],2)):为函数“t”选择方法时计算参数“x”时的错误:combn中的错误([[B]],2):n