【发布时间】:2018-04-13 17:59:03
【问题描述】:
我有一个这样的数据框:
Var1 Var2 value
x5 x1 2
x6 x1 6
x1 x2 2
x5 x2 2
x6 x2 4
x7 x2 3
我想根据对应的Var2 与每对Var1 的最小值来重塑/聚合/总结它,就像这样:
Var3 Var4 minvalue
x5 x6 2
x1 x5 2
x1 x6 2
x1 x7 2
x5 x6 2
x5 x7 2
x6 x7 3
如果您将Var1 值与对应的Var2 值组合在一起,请选择最小值。例如,x1 as Var2 连接 x5 和 x6 作为 Var1 并且值为 min(x5,x6)=2
有什么想法吗?
【问题讨论】:
-
这两个数据集有什么关系?这个问题需要澄清,因为不可能知道您要达到的目标。
-
我想这就是你需要的
do.call(rbind, lapply(split(df1[-2], df1$Var2), function(x) {x1 <- combn(x$Var1, 2, FUN = list); data.frame(do.call(rbind, x1),minvalue = sapply(x1, function(y) min(x$value[x$Var1 %in% y]))) })) -
或使用
data.table,即setDT(df1)[, {x1 <- combn(Var1, 2, FUN = list); data.frame(do.call(rbind, x1), minvalue = sapply(x1, function(y) min(value[Var1 %in% y])), stringsAsFactors= FALSE)}, Var2]