在数据的不同部分使用函数

时间:2016-07-01 21:29:14

标签: r dataframe grouping

说我有这样的数据:

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来自上述公式,我怎么能这样做呢? 我不能硬着日期和项目,他们不断变化取决于我使用的数据集。

2 个答案:

答案 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)