我有一个数据框,如下所示。我想删除重要元组(Parameter
,Value
)的重复出现,并选择最小mse
的那个。
> df
mse Parameter Value
1 25.86760 Training_size 100
2 8.42944 Training_size 200
3 58.80860 Training_size 300
4 34.37760 Training_size 400
5 99.61530 Training_size 500
6 19.77290 Training_size 600
7 24.76670 Training_size 700
8 587.96900 Training_size 800
9 538.02500 Training_size 900
10 60.39630 Training_size 1000
11 137.07600 Training_size 2000
12 62.05740 Training_size 3000
13 8.44762 Training_size 200
14 8.44610 Training_size 200
15 8.44871 Training_size 200
16 8.42939 Training_size 200
17 11.78550 Training_size 200
18 11.78520 Training_size 200
19 1726.44000 Training_size 200
20 1726.44000 Training_size 200
21 1726.43000 Training_size 200
22 8.42939 Training_size 200
23 8.42942 Training_size 200
24 8.42939 Training_size 200
25 8.42938 Training_size 200
我想改为:
mse Parameter Value
1 25.86760 Training_size 100
3 58.80860 Training_size 300
4 34.37760 Training_size 400
5 99.61530 Training_size 500
6 19.77290 Training_size 600
7 24.76670 Training_size 700
8 587.96900 Training_size 800
9 538.02500 Training_size 900
10 60.39630 Training_size 1000
11 137.07600 Training_size 2000
12 62.05740 Training_size 3000
25 8.42938 Training_size 200
我该怎么做?
答案 0 :(得分:3)
如果您想用于大数据,那么您可以考虑使用data.table
:
library(data.table)
DT <- as.data.table(mydata)
setkey(DT,Parameter,Value) # optional, for further speed
DT[,min(mse),by="Parameter,Value"]
Parameter Value V1
1: Training_size 100 25.86760
2: Training_size 200 8.42938
3: Training_size 300 58.80860
4: Training_size 400 34.37760
5: Training_size 500 99.61530
6: Training_size 600 19.77290
7: Training_size 700 24.76670
8: Training_size 800 587.96900
9: Training_size 900 538.02500
10: Training_size 1000 60.39630
11: Training_size 2000 137.07600
12: Training_size 3000 62.05740
答案 1 :(得分:2)
在基地
中使用aggregate
功能
> aggregate(.~Value+Parameter, data=df, FUN=min)
Value Parameter mse
1 100 Training_size 25.86760
2 200 Training_size 8.42938
3 300 Training_size 58.80860
4 400 Training_size 34.37760
5 500 Training_size 99.61530
6 600 Training_size 19.77290
7 700 Training_size 24.76670
8 800 Training_size 587.96900
9 900 Training_size 538.02500
10 1000 Training_size 60.39630
11 2000 Training_size 137.07600
12 3000 Training_size 62.05740
答案 2 :(得分:0)
我认为'删除重复元组重复出现的过程(Parameter
,value
)的过程包含在“选择具有最小mse
”的过程中。真的(如果我已经正确理解的话)你只想为mse
和Parameter
的每个独特组合构建一个包含value
最小值的数据框。 (注意,元组不是R中定义的数据类型。
plyr
包非常适合这种情况。
require(plyr)
ddply(df, c("Parameter", "value"), summarise, min(mse))