ggplot の準備をしている次のようなデータ フレームがあります。
txt <- "v1 v2 v3
'Strongly agree' 83.1 var1
'Agree' 14.9 var1
'Disagree' 1.5 var1
'Strongly disagree' 0.6 var1
'Strongly agree' 11.8 var2
'Agree' 36.5 var2
'Disagree' 17.7 var2
'Strongly disagree' 43.8 var2
'Strongly agree' 19.6 var3
'Agree' 12 var3
'Disagree' 31.6 var3
'Strongly disagree' 36.8 var3"
mydata <- read.table(textConnection(txt), sep = " ", header = TRUE)
私の質問は:の値と のレベルのmydata$v3
両方に基づいてのレベルを並べ替えるにはどうすればよいですか?mydta$v2
mydata$v1
例: たとえば、「強く同意する」レベル内の最高値mydata$v3
に基づいてレベルを並べ替えたい場合、次のようになります。mydata$v2
mydata$v1
var1
var3
var2
mydata$v2
別の例: たとえば、「強く同意する」と「同意する」のレベル内の値のmydata$v3
合計に基づいてレベルを並べ替えたい場合、次のようになります。+14.9)=98、(11.8+36.5)=48.3、(19.6+12)=31.6mydata$v2
mydata$v1
var1
var2
var3
mydata$v2
私はこれに自分でアプローチする方法がわかりません。また、私はこのような多くのフレームを扱っているので、コードは関数に入る必要があります
編集:
両方の例で、目的の結果は元の data.frame のみで、mydata$v3 のレベルの順序が変更されています。
したがって、例1では次のようになります。
v1 v2 v3
1 Strongly agree 83.1 var1
2 Agree 14.9 var1
3 Disagree 1.5 var1
4 Strongly disagree 0.6 var1
5 Strongly agree 11.8 var2
6 Agree 36.5 var2
7 Disagree 17.7 var2
8 Strongly disagree 43.8 var2
9 Strongly agree 19.6 var3
10 Agree 12.0 var3
11 Disagree 31.6 var3
12 Strongly disagree 36.8 var3
levels(mydata$v3)
[1] "var1" "var2" "var3"
しかし、私が終わらせたいのはこれです。
v1 v2 v3
1 Strongly agree 83.1 var1
2 Agree 14.9 var1
3 Disagree 1.5 var1
4 Strongly disagree 0.6 var1
5 Strongly agree 11.8 var2
6 Agree 36.5 var2
7 Disagree 17.7 var2
8 Strongly disagree 43.8 var2
9 Strongly agree 19.6 var3
10 Agree 12.0 var3
11 Disagree 31.6 var3
12 Strongly disagree 36.8 var3
levels(mydata$v3)
[1] "var1" "var3" "var2"
例 2 では、次のようにしています。
v1 v2 v3
1 Strongly agree 83.1 var1
2 Agree 14.9 var1
3 Disagree 1.5 var1
4 Strongly disagree 0.6 var1
5 Strongly agree 11.8 var2
6 Agree 36.5 var2
7 Disagree 17.7 var2
8 Strongly disagree 43.8 var2
9 Strongly agree 19.6 var3
10 Agree 12.0 var3
11 Disagree 31.6 var3
12 Strongly disagree 36.8 var3
levels(mydata$v3)
[1] "var1" "var2" "var3"
しかし欲しい:
v1 v2 v3
1 Strongly agree 83.1 var1
2 Agree 14.9 var1
3 Disagree 1.5 var1
4 Strongly disagree 0.6 var1
5 Strongly agree 11.8 var2
6 Agree 36.5 var2
7 Disagree 17.7 var2
8 Strongly disagree 43.8 var2
9 Strongly agree 19.6 var3
10 Agree 12.0 var3
11 Disagree 31.6 var3
12 Strongly disagree 36.8 var3
levels(mydata$v3)
[1] "var1" "var2" "var3"
例 2 では、私が持っているものと欲しいものは同じですが、そうではない data.frames がたくさんあることに注意してください。
私が探しているのは、複雑なバージョンの
factor(maydata$v3, levels(mydata$v3)[EXAMPLE1: order after value in v2 within 1 level in v1 /EXAMPLE2: order after sum of value within 2 levels in v1])