我有一个data.frame,每行代表n个样本的成对组合的值。我怎么能扩展这个基本上得到一个' expand.grid'每个组合,但保持给定对的值,并给具有相同样本的行的值1? 我的目标是将这些绘制在一个相关矩阵中。风格情节(例如plots)。不确定是否有更简单的方法。
set.seed(123)
n <- 3
d <- as.data.frame(t(combn(letters[1:n], m = 2)), stringsAsFactors = FALSE)
d$value <- rnorm(nrow(d))
d
## V1 V2 value
## 1 a b -0.5604756
## 2 a c -0.2301775
## 3 b c 1.5587083
e <- expand.grid(letters[1:n], letters[1:n])
#e$value <- ??
# a-a, b-b, c-c will be e.g. 1
# a-b and b-a will be -0.5604
# a-c and c-a will be -0.2301
# b-c and c-b will be 1.5587
e
## Var1 Var2
## 1 a a
## 2 b a
## 3 c a
## 4 a b
## 5 b b
## 6 c b
## 7 a c
## 8 b c
## 9 c c
答案 0 :(得分:2)
以下是使用data.table
的选项。将'data.frame'转换为'data.table'(setDT(d,..
)为'V1'和'V2'(V1==V2
中具有相同值的行设置'key'列,交叉连接),将'value'设置为1.按相同列的'V1','V2'和pmax
的{{1}}分组,将'value'替换为非NA值in '值'。
pmin