[R] confusion on levels() function, and how to assign a wanted order to factor levels, intentionally?
xavier.chardon at free.fr
xavier.chardon at free.fr
Tue Jun 16 09:57:35 CEST 2009
Hi,
The way you do it actually renames the factors one after each other (it replaces the values in the data frame, which is not what you want).
Have a look at this code:
test <- data.frame(id=c(1,2,3), fac=c("lv1", "lv2", "lv3") )
levels(test$fac)
test$fac2 <- factor(test$fac, levels=c("lv3", "lv2", "lv1"))
levels(test$fac2)
test
HTH,
Xavier
----- Mail Original -----
De: "Mao Jianfeng" <jianfeng.mao at gmail.com>
À: r-help at r-project.org
Envoyé: Mardi 16 Juin 2009 09h14:01 GMT +01:00 Amsterdam / Berlin / Berne / Rome / Stockholm / Vienne
Objet: [R] confusion on levels() function, and how to assign a wanted order to factor levels, intentionally?
Dear R-helpers,
I want to make a series of boxplots on several numeric univariates with two
group variables (species and population, population nested in species, and
with population as the X-axis). In order to get a proper order of the
individual populations in X-axis, I need to assign a wanted order to the
factor (population). I used the levels() function to do this assignment, but
it seemed levels() function not only changed the levels of the factor, but
also the correlations of the factor and the numeric variables.
I am confused. And, I want to know how to assign a wanted order to factor
levels, intentionally? I think assignment is also indispensible for others
who are do data analysing using R. Can you help me?
Thank you a lot in advance.
Best regards,
Mao J-F
data, code, and results I used and got are as followed:
(You can find that the correlations of the factor and the numeric variables
changed, before and after the levels() was performed.)
> d<-read.delim("All.txt",header=T)
> d
species population conlen tscale fscale tseen w100s nfsee
1 Py YXPy01 8.60 153 69 111 1.680851 94
2 Py YXPy01 8.10 173 74 139 1.848485 133
3 Py YLPy01 6.50 138 58 99 1.520833 48
4 Py YLPy01 5.90 153 67 118 1.355140 107
5 Py KMPy01 6.10 113 48 75 1.470588 51
6 Py KMPy01 5.10 129 54 100 1.176471 68
7 Py KMPy01 3.90 109 37 30 1.500000 22
8 Py KMPy01 5.00 128 55 71 1.468750 64
9 Py KMPy01 4.70 132 54 32 1.500000 28
10 Py KMPy01 5.80 113 52 65 1.136364 45
11 Py KMPy01 4.70 114 42 71 1.131148 61
12 Py KMPy01 5.00 120 77 131 1.403361 119
13 Py GSPy02 6.20 152 59 102 1.348837 43
14 Py GSPy02 6.20 111 41 64 2.805556 36
15 Py GSPy02 6.70 130 56 67 1.757576 33
16 Py GSPy02 6.60 115 47 78 1.603175 63
17 Py GSPy02 8.90 137 61 102 1.767677 99
18 Py GSPy02 6.20 157 68 115 1.459016 61
19 Py BCPy01 5.30 91 39 24 1.263158 19
20 Py BCPy01 6.10 100 46 53 1.117647 17
21 Py BCPy01 4.50 81 32 46 1.320000 25
22 Py LJPy01 6.60 170 65 72 2.035714 56
23 Py LJPy01 6.90 104 46 58 1.800000 55
24 Py LJPy01 8.60 161 66 38 1.794118 34
25 Py LJPy01 5.40 123 40 22 2.428571 21
26 Py LJPy01 6.80 123 54 57 2.044444 46
27 Py LJPy01 8.60 166 77 77 1.847458 59
28 Py LJPy01 6.00 132 51 91 1.119048 84
29 Py LJPy01 6.80 108 45 27 1.814815 27
30 Py LJPy01 6.20 115 48 70 1.765957 47
31 Py LJPy01 8.00 168 80 132 2.036364 111
32 Pd CYPd01 6.70 138 57 23 1.555556 9
33 Pd CYPd01 6.80 121 46 53 1.973684 38
34 Pd CYPd01 5.90 114 52 60 1.250000 12
35 Pd CYPd01 5.20 119 53 53 1.432432 37
36 Pd CYPd01 7.60 118 46 63 2.000000 23
37 Pd CYPd01 6.10 144 61 24 1.428571 14
38 Pd CYPd01 5.50 130 46 62 1.320000 54
39 Pd CYPd01 6.60 153 57 83 1.558442 77
40 Pd CYPd02 5.90 111 32 51 1.300000 10
41 Pd CYPd02 7.10 121 51 80 1.451613 31
42 Pd CYPd02 7.30 150 68 127 1.681416 113
43 Pd CYPd02 5.60 121 38 64 1.228571 36
44 Pd CYPd02 7.20 140 62 88 1.585366 41
45 Pd CYPd02 6.10 113 54 91 1.256757 74
46 Pd CYPd03 4.60 109 45 57 1.093750 32
47 Pd CYPd03 4.90 115 44 45 1.235294 17
48 Pd CYPd03 6.40 134 44 64 1.209302 45
49 Pd CYPd03 4.60 96 42 41 1.150000 21
50 Pd CYPd03 5.60 131 43 45 1.771429 35
51 Pd CYPd03 6.10 124 48 59 1.578947 38
52 Pd CYPd03 5.20 110 57 71 1.340426 47
53 Pd CYPd03 5.50 118 57 83 1.625000 48
54 Pd CYPd03 6.10 106 61 95 1.559322 60
55 Pd CYPd03 6.20 121 64 100 1.707692 65
56 Pd CYPd03 5.10 99 38 28 1.430000 20
57 Pd CYPd03 5.10 132 45 47 1.791667 24
58 Pd YLPd01 6.15 120 43 46 1.446000 21
59 Pt BXPd01 4.60 64 18 23 2.166667 18
60 Pt BXPd01 5.10 87 26 38 2.250000 32
61 Pt BXPd01 4.80 89 27 50 2.130435 46
62 Pt BXPd01 6.00 97 29 31 2.684211 19
63 Pt BXPd01 5.20 98 32 54 2.292683 41
64 Pt GYPt01 4.30 98 27 8 4.000000 5
65 Pt GYPt01 4.00 82 27 51 2.781250 32
66 Pt GYPt01 5.00 106 35 8 4.333333 6
67 Pt GYPt01 5.10 86 24 25 3.375000 16
68 Pt GYPt01 4.60 79 25 21 2.631579 19
69 Pt GYPt01 5.00 80 30 23 2.823529 17
70 Pt NSPt01 5.30 107 27 37 2.850000 33
71 Pt NSPt01 5.40 85 26 38 2.270000 32
72 Pt NSPt01 5.40 102 31 50 5.320000 40
73 Pt NSPt01 5.10 84 23 29 5.320000 23
74 Pt NSPt01 NA NA NA NA NA NA
75 Pt NSPt01 4.10 57 17 24 2.700000 18
> levels(d$population)
[1] "BCPy01" "BXPd01" "CYPd01" "CYPd02" "CYPd03" "GSPy02" "GYPt01" "KMPy01"
"LJPy01" "NSPt01"
[11] "YLPd01" "YLPy01" "YXPy01"
> levels(d$population)<-c("YXPy01", "KMPy01", "YLPy01", "GSPy02", "BCPy01",
"LJPy01", "GYPt01", "YLPd01", "CYPd01", "CYPd02", "CYPd03", "BXPd01",
"NSPt01")
> levels(d$population)
[1] "YXPy01" "KMPy01" "YLPy01" "GSPy02" "BCPy01" "LJPy01" "GYPt01" "YLPd01"
"CYPd01" "CYPd02"
[11] "CYPd03" "BXPd01" "NSPt01"
> d
species population conlen tscale fscale tseen w100s nfsee
1 Pt NSPt01 8.60 153 69 111 1.680851 94
2 Pt NSPt01 8.10 173 74 139 1.848485 133
3 Pt BXPd01 6.50 138 58 99 1.520833 48
4 Pt BXPd01 5.90 153 67 118 1.355140 107
5 Pt YLPd01 6.10 113 48 75 1.470588 51
6 Pt YLPd01 5.10 129 54 100 1.176471 68
7 Pt YLPd01 3.90 109 37 30 1.500000 22
8 Pt YLPd01 5.00 128 55 71 1.468750 64
9 Pt YLPd01 4.70 132 54 32 1.500000 28
10 Pt YLPd01 5.80 113 52 65 1.136364 45
11 Pt YLPd01 4.70 114 42 71 1.131148 61
12 Pt YLPd01 5.00 120 77 131 1.403361 119
13 Pt LJPy01 6.20 152 59 102 1.348837 43
14 Pt LJPy01 6.20 111 41 64 2.805556 36
15 Pt LJPy01 6.70 130 56 67 1.757576 33
16 Pt LJPy01 6.60 115 47 78 1.603175 63
17 Pt LJPy01 8.90 137 61 102 1.767677 99
18 Pt LJPy01 6.20 157 68 115 1.459016 61
19 Pt YXPy01 5.30 91 39 24 1.263158 19
20 Pt YXPy01 6.10 100 46 53 1.117647 17
21 Pt YXPy01 4.50 81 32 46 1.320000 25
22 Pt CYPd01 6.60 170 65 72 2.035714 56
23 Pt CYPd01 6.90 104 46 58 1.800000 55
24 Pt CYPd01 8.60 161 66 38 1.794118 34
25 Pt CYPd01 5.40 123 40 22 2.428571 21
26 Pt CYPd01 6.80 123 54 57 2.044444 46
27 Pt CYPd01 8.60 166 77 77 1.847458 59
28 Pt CYPd01 6.00 132 51 91 1.119048 84
29 Pt CYPd01 6.80 108 45 27 1.814815 27
30 Pt CYPd01 6.20 115 48 70 1.765957 47
31 Pt CYPd01 8.00 168 80 132 2.036364 111
32 Py YLPy01 6.70 138 57 23 1.555556 9
33 Py YLPy01 6.80 121 46 53 1.973684 38
34 Py YLPy01 5.90 114 52 60 1.250000 12
35 Py YLPy01 5.20 119 53 53 1.432432 37
36 Py YLPy01 7.60 118 46 63 2.000000 23
37 Py YLPy01 6.10 144 61 24 1.428571 14
38 Py YLPy01 5.50 130 46 62 1.320000 54
39 Py YLPy01 6.60 153 57 83 1.558442 77
40 Py GSPy02 5.90 111 32 51 1.300000 10
41 Py GSPy02 7.10 121 51 80 1.451613 31
42 Py GSPy02 7.30 150 68 127 1.681416 113
43 Py GSPy02 5.60 121 38 64 1.228571 36
44 Py GSPy02 7.20 140 62 88 1.585366 41
45 Py GSPy02 6.10 113 54 91 1.256757 74
46 Py BCPy01 4.60 109 45 57 1.093750 32
47 Py BCPy01 4.90 115 44 45 1.235294 17
48 Py BCPy01 6.40 134 44 64 1.209302 45
49 Py BCPy01 4.60 96 42 41 1.150000 21
50 Py BCPy01 5.60 131 43 45 1.771429 35
51 Py BCPy01 6.10 124 48 59 1.578947 38
52 Py BCPy01 5.20 110 57 71 1.340426 47
53 Py BCPy01 5.50 118 57 83 1.625000 48
54 Py BCPy01 6.10 106 61 95 1.559322 60
55 Py BCPy01 6.20 121 64 100 1.707692 65
56 Py BCPy01 5.10 99 38 28 1.430000 20
57 Py BCPy01 5.10 132 45 47 1.791667 24
58 Py CYPd03 6.15 120 43 46 1.446000 21
59 Pd KMPy01 4.60 64 18 23 2.166667 18
60 Pd KMPy01 5.10 87 26 38 2.250000 32
61 Pd KMPy01 4.80 89 27 50 2.130435 46
62 Pd KMPy01 6.00 97 29 31 2.684211 19
63 Pd KMPy01 5.20 98 32 54 2.292683 41
64 Pd GYPt01 4.30 98 27 8 4.000000 5
65 Pd GYPt01 4.00 82 27 51 2.781250 32
66 Pd GYPt01 5.00 106 35 8 4.333333 6
67 Pd GYPt01 5.10 86 24 25 3.375000 16
68 Pd GYPt01 4.60 79 25 21 2.631579 19
69 Pd GYPt01 5.00 80 30 23 2.823529 17
70 Pd CYPd02 5.30 107 27 37 2.850000 33
71 Pd CYPd02 5.40 85 26 38 2.270000 32
72 Pd CYPd02 5.40 102 31 50 5.320000 40
73 Pd CYPd02 5.10 84 23 29 5.320000 23
74 Pd CYPd02 NA NA NA NA NA NA
75 Pd CYPd02 4.10 57 17 24 2.700000 18
[[alternative HTML version deleted]]
______________________________________________
R-help at r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
More information about the R-help
mailing list