2

これを行う方法がわかりません。R に data.frame があります。次のようになります。

Scores <- read.table(text = "
        ID Test1 Test2 Test3 Final
1 Student1    20    23    21    48
2 Student2    16    15    18    36
3 Student3    25    20    22    40
4 Student4    14    19    18    42
5 Student5    10    15    14    30
")

私が望むのは、最終テストを含む各テストの値の範囲を持つ新しいデータ オブジェクトを作成することです。したがって、次のようになります。

result <- read.table(text = "
       min max
Test1  10  25
Test2  15  23
Test3  14  22
Final  30  48
")

正直なところ、最大値と最小値をリストするだけなのか、実際に差を計算するのかは問題ではありません。不必要に複雑ではないこれを実装する方法がわかりません。列を手動で個別に引き出すことができることは知っていますが、これを行うにはもっと良い方法があるはずです。何かを含むby()tapply()?しかし、私はそれらを機能させることができません。

何か案は?

4

6 に答える 6

1

これを試してみてください。再現可能な例が含まれています。

test <- data.frame(a=c(1,2,3),b=c(2,3,5),d=c(1,2,2))
data.frame(min=sapply(test,min),max=sapply(test,max))

編集: 再現可能な例の @Blue Magister リクエストに追加:ここ?dput ?structureに投稿する方法を調べてくださいdata.frame(例: dput(scores))。

于 2013-09-19T21:17:41.110 に答える
0
colrange<-function(x){
    sapply(x,range)
}

関数colrangeを作成し、データを挿入します。colrange(scores)

于 2020-07-08T04:57:56.357 に答える