2017-06-01 17 views
1

如何更改一組因子的關卡名稱?
請檢查F1Example df,F1是6個等級(0〜5)的因子。如何更改一組因子的等級名稱?

如何將F1更改爲3個等級(1,2,3)?

例如:如果F1 == 0 or 1,新的級別名稱是1,如果F1 == 2 or 3,新的級別名稱是2,如果F1 == 4 or 5,新的級別名稱是3像Expected Outcome

library(plyr) 
revalue(df$F1, c("0"="1", "1"="1","2"="2", "3"="2","4"="3", "5"="3")) 
# I could do this but if there are tens or hundreds of levels, 
# I will need to do this one by one, there must be a more convenient way. 

例DF

Volume Weight F1 F2 
1: 0.5367 0.5367 0 1 
2: 0.8645 0.8508 0 0 
3: 0.8573 0.8585 0 0 
4: 1.1457 1.1413 1 0 
5: 0.8573 0.8568 1 0 
6: 0.5694 0.5633 1 1 
7: 1.2368 1.2343 2 0 
8: 0.9662 0.9593 2 1 
9: 1.4850 1.3412 2 0 
10: 1.4850 1.3995 2 0 
11: 1.1132 1.1069 3 1 
12: 1.4535 1.3923 3 0 
13: 1.0437 1.0344 3 1 
14: 1.1475 1.1447 4 1 
15: 1.1859 1.1748 4 0 
16: 1.1859 1.1735 4 0 
17: 1.1859 1.1731 4 0 
18: 1.1557 1.1552 5 1 
19: 1.1749 1.1731 5 0 
20: 1.1749 1.1552 5 0 

預期結果

Volume Weight F1 F2 
1: 0.5367 0.5367 1 1 
2: 0.8645 0.8508 1 0 
3: 0.8573 0.8585 1 0 
4: 1.1457 1.1413 1 0 
5: 0.8573 0.8568 1 0 
6: 0.5694 0.5633 1 1 
7: 1.2368 1.2343 2 0 
8: 0.9662 0.9593 2 1 
9: 1.4850 1.3412 2 0 
10: 1.4850 1.3995 2 0 
11: 1.1132 1.1069 2 1 
12: 1.4535 1.3923 2 0 
13: 1.0437 1.0344 2 1 
14: 1.1475 1.1447 3 1 
15: 1.1859 1.1748 3 0 
16: 1.1859 1.1735 3 0 
17: 1.1859 1.1731 3 0 
18: 1.1557 1.1552 3 1 
19: 1.1749 1.1731 3 0 
20: 1.1749 1.1552 3 0 
+1

如果有數十或數百個關卡,那麼如何重新編碼它們的規則是什麼?最低級別爲'1',然後每兩個值合併在一起,所以'2 + 3','4 + 5','6 + 7'等等?如果問題是關於如何將其擴展到大量的層次,則需要解釋規則。 – Marius

+2

'df $ F1 < - 因子(1 + as.numeric(df $ F1)%/%2)' –

+2

或者:'df [,F1:= floor(F1/2)+1]' – Jaap

回答

2

我們可以使用data.table方法作爲對象是data.table

library(data.table) 
df[, F1 := factor((F1 %/% 2)+1)] 
+2

不知道,我也投了票。 – Jimmy