-1

R に問題があり、解決できないようです。

次のデータフレームがあります。

画像1

私はしたいと思います:

  1. 列「種」と「効果」のユニークな組み合わせを見つけます
  2. このユニークな組み合わせに属する濃度を報告する
  3. このユニークな組み合わせが複数回存在する場合は、平均濃度を計算します

そして、次のデータフレームを取得したいと思います:

画像2

次のスクリプトを試して、一意の組み合わせを取得しました。

UniqueCombinations <- Data[!duplicated(Data[,1:2]),]

しかし、そこから先に進む方法がわかりません。

ご回答ありがとうございます。

ティナ

4

3 に答える 3

6

いくつかのサンプル データを作成します。

dat <- data.frame(Species = rep.int(LETTERS[1:4], c(4, 1, 3, 2)),
                  Effect = c(rep("Reproduction", 3), "Growth", "Growth",
                             "Reproduction", "Mortality", "Mortality",
                             "Growth", "Growth"),
                  Concentration = rnorm(10))

関数を使用できますaggregate

aggregate(Concentration ~ Species + Effect, dat, mean)
于 2012-10-22T18:45:22.250 に答える
5

次のことを試してください (Brandon Bertelsen さん、素敵なコメントをありがとう):

データの作成:

foo = data.frame(Species=c(rep("A",4),"B",rep("C",3),"D","D"), 
                 Effect=c(rep("Reproduction",3), rep("Growth",2),
                          "Reproduction", rep("Mortality",2), rep("Growth",2)), 
                 Concentration=c(1.2,1.4,1.3,1.5,1.6,1.2,1.1,1,1.3,1.4))

plyrちょっとした魔法のために素晴らしいパッケージを使用します:)

library(plyr)
ddply(foo, .(Species,Effect), function(x) mean(x[,"Concentration"]))

これはもう少し複雑ですが、よりクリーンなバージョンです (Brandon Bertelsen に感謝します):

ddply(foo, .(Species,Effect), summarize, mean=mean(Concentration))
于 2012-10-22T18:45:43.547 に答える
5

夜と呼ぶ前の楽しみのために....あなたdata.frameが「dat」と呼ばれると仮定すると、さらに2つのオプションがあります。

  1. data.table解決策。

    library(data.table)
    datDT <- data.table(dat, key="Species,Effect")
    datDT[, list(Concentration = mean(Concentration)), by = key(datDT)]
    #    Species       Effect Concentration
    # 1:       A       Growth          1.50
    # 2:       A Reproduction          1.30
    # 3:       B       Growth          1.60
    # 4:       C    Mortality          1.05
    # 5:       C Reproduction          1.20
    # 6:       D       Growth          1.35
    
  2. sqldf解決策。

    library(sqldf)
    sqldf("select Species, Effect,
          avg(Concentration) `Concentration`
          from dat
          group by Species, Effect")
    #   Species       Effect Concentration
    # 1       A       Growth          1.50
    # 2       A Reproduction          1.30
    # 3       B       Growth          1.60
    # 4       C    Mortality          1.05
    # 5       C Reproduction          1.20
    # 6       D       Growth          1.35
    
于 2012-10-22T19:46:06.850 に答える