如何查找具有相同colnames/rownames的行的值之间的差异?
我想找出每组2个组合之间的差异,按列如何查找具有相同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
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