计算R中类似情况(观测值)的最小距离
我有一个数据集,它描述了将3种算法应用于多个案例的结果。对于算法和案例的每个组合,都有一个结果 然而,当我想在整个数据集中计算一个新列时,我会得到案例2的虚假结果计算R中类似情况(观测值)的最小距离,r,R,我有一个数据集,它描述了将3种算法应用于多个案例的结果。对于算法和案例的每个组合,都有一个结果 然而,当我想在整个数据集中计算一个新列时,我会得到案例2的虚假结果 df$gap <- gap(df$case, df$result) df 现在看来,GAP函数对整个数据文件的最小结果起作用,而它应该只考虑具有相同情况的行。可能间隙函数中的子集筛选工作不正常?使用ave获得每组的最小值,并从结果中减去 df$result - ave(df$result, df$case, FUN = min
df$gap <- gap(df$case, df$result)
df
现在看来,GAP函数对整个数据文件的最小结果起作用,而它应该只考虑具有相同情况的行。可能间隙函数中的子集筛选工作不正常?
使用ave
获得每组的最小值,并从结果中减去
df$result - ave(df$result, df$case, FUN = min)
#[1] 0 1 2 2 3 0
我们可以使用dplyr
library(dplyr)
df %>%
group_by(case) %>%
mutate(result = result - min(result))
# A tibble: 6 x 3
# Groups: case [2]
# case algorithm result
# <fctr> <fctr> <dbl>
#1 case1 algo1 0
#2 case1 algo2 1
#3 case1 algo3 2
#4 case2 algo1 2
#5 case2 algo2 3
#6 case2 algo3 0
库(dplyr)
df%>%
组别(个案)%>%
变异(结果=结果-最小值(结果))
#一个tibble:6x3
#分组:案例[2]
#case算法结果
#
#1宗个案1宗10宗
#2案例1算法2 1
#3案例1算法3 2
#4案例2算法1 2
#5案例2算法2 3
#6案例2算法3 0
这个也可以。要添加我想要的列“gap”,需要使用df$gap
df$gap <- gap(df$case, df$result)
df
case algorithm result gap
1 case1 algo1 10 0
2 case1 algo2 11 1
3 case1 algo3 12 2
4 case2 algo1 22 12
5 case2 algo2 23 13
6 case2 algo3 20 10
df$result - ave(df$result, df$case, FUN = min)
#[1] 0 1 2 2 3 0
library(dplyr)
df %>%
group_by(case) %>%
mutate(result = result - min(result))
# A tibble: 6 x 3
# Groups: case [2]
# case algorithm result
# <fctr> <fctr> <dbl>
#1 case1 algo1 0
#2 case1 algo2 1
#3 case1 algo3 2
#4 case2 algo1 2
#5 case2 algo2 3
#6 case2 algo3 0