適用関数のすべての可能性を使用する方法を説明する満足のいくチュートリアルが見つかりません。私はまだ初心者ですが、これは多くの場合便利で、コードを大幅に簡素化できます。これが私の例です...次のようなデータフレームがあります:
> head(p01)
time key dwell
1 8.13 z 0.00
3 8.13 x 1.25
5 9.38 l 0.87
7 10.25 x 0.15
9 10.40 l 1.13
11 11.53 x 0.45
それをRに入れます:
p01 <- structure(list(time = c(8.13, 8.13, 9.38, 10.25, 10.4, 11.53),
key = c("z", "x", "l", "x", "l", "x"), dwell = c(0, 1.25,
0.869, 0.15, 1.13, 0.45)), .Names = c("time", "key", "dwell"), row.names = c(1L, 3L, 5L, 7L, 9L, 11L), class = "data.frame")
ここで、各文字の出現回数を数えて に出力p01$key
しp01$occurences
、結果が次のようになるようにします。
time key dwell occurences
1 8.13 z 0.00 1
3 8.13 x 1.25 3
5 9.38 l 0.87 2
7 10.25 x 0.15 3
9 10.40 l 1.13 2
11 11.53 x 0.45 3
私が今それを行う方法は次のとおりです。
p01[p01$key == "l", "occurences"] <- table(p01$key)["l"]
p01[p01$key == "x", "occurences"] <- table(p01$key)["x"]
p01[p01$key == "z", "occurences"] <- table(p01$key)["z"]
...もちろん、これは最善の解決策ではありません。p01$key
特に、実際のデータには(16 種類の文字のうちの 1 つ) の可能性が含まれているためです。
その上で、各文字の合計を計算したいdwell
ので、今やっていることは次のとおりです。
p01[p01$key == "l", "total_dwell"] <- tapply(p01$dwell, p01$key, sum)["l"]
p01[p01$key == "x", "total_dwell"] <- tapply(p01$dwell, p01$key, sum)["x"]
p01[p01$key == "z", "total_dwell"] <- tapply(p01$dwell, p01$key, sum)["z"]
取得するために:
time key dwell total_dwell
1 8.13 z 0.00 0.00
3 8.13 x 1.25 1.85
5 9.38 l 0.87 2.00
7 10.25 x 0.15 1.85
9 10.40 l 1.13 2.00
11 11.53 x 0.45 1.85
私は過去6時間、グーグルで数冊の本を読んでいます。エレガントなソリューションや包括的なチュートリアルへのリンクを本当に感謝します。私のソリューションは明らかに機能していますが、このような問題を回避しなければならないのは初めてではなく、スクリプト ファイルがばかげているように見え始めています!