说我有这样的数据:
Date: Item: x1: x2:
1-Jan Dog 0.3 0.2
2-Jan Cat 0.3 0.4
1-Jan Dog 0.1 0.3
2-Jan Dog 0.1 0.3
我正在使用这个公式:
euc.dist <- function(x1, x2) sqrt(sum((x1 - x2) ^ 2))
我希望我的最终结果如下:
Date: Item: Distance:
1-Jan Dog x -> x1=(0.3, 0.2), x2=(0.1, 0.3)
2-Jan Cat y -> x1=0.3, x2=0.4
2-Jan Dog z -> x1=0.1, x2=0.3
如果x,y,a
来自上述公式,我怎么能这样做呢?
我不能硬着日期和项目,他们不断变化取决于我使用的数据集。
答案 0 :(得分:0)
使用data.table
:
df <- read.table(text =
"Date Item x1 x2
1-Jan Dog 0.3 0.2
2-Jan Cat 0.3 0.4
1-Jan Dog 0.1 0.3
2-Jan Dog 0.1 0.3 ", header = T)
library(data.table)
euc.dist <- function(x1, x2) sqrt(sum((x1 - x2) ^ 2))
dt <- data.table(df)
res <- dt[, .(distance = euc.dist(x1, x2)), by = .(Date, Item)]
答案 1 :(得分:0)
如果您将flex: 0 1 50%;
重写为
euc.dist
你可以做到
euc.dist <- function(x1, x2) sqrt((x1 - x2) ^ 2)