2

「value=」パラメーターを使用しようとしています。それは私が望むことをしません。以下の例では、問題をより単純な形式で再現しています。「value =」パラメーターの目的が何であるか疑問に思っています。

すべての要素と、値 0、1、2、3、4 を取る単一の数値変数を使用して、データ フレームを長い形式に溶かしました。次に、元の値列を調整するために、0,1 の 2 番目の値列を作成しました。元の値の列である限り、集計しようとすると、キャストはうまく機能します。

D = data.frame(id = 1:10,
           grp = rep(c("A","B"),5),
           variable = "var",
           value = rnorm(10,0,1),
           value2 = rnorm(10,10,2))

cast(D, grp~., mean)                    #works fine
cast(D, grp~., value = "value2", mean)  #does not work

これが不可能な場合は、データを操作する必要があります。

4

1 に答える 1

1

よくわかりませんが、 の次のコードが原因だと思いますcast

if (any(names(data) == value)) 
names(data)[names(data) == value] <- "value"

たとえば、変数名に「値」という単語を使用しないようにしてからnames(D)[4:5] = c("one", "two")、およびを使用cast(D, grp ~ ., mean, value="one")cast(D, grp ~ ., mean, value="two")て、探している結果を取得してください。

アップデート

技術的には、データは完全に「溶解」していません。これに正しくアプローチする方法については、以下の例を参照してください。基本的には、データをもう一度「溶かして」使用する必要がありますsubset("value" と "value2" を、何が起こっているかをより簡単に確認できる値に変更しました。)

D = data.frame(id = 1:10,
               grp = rep(c("A","B"),5),
               variable = "var",
               value = rep(c(1, 2), 5),
               value2 = rep(c(3, 4), 5))
D2 = melt(D, id.vars=1:2, measure.vars=4:5)
cast(D2, grp ~ ., mean, subset=variable=="value")
#   grp (all)
# 1   A     1
# 2   B     2
cast(D2, grp ~ ., mean, subset=variable=="value2")
#   grp (all)
# 1   A     3
# 2   B     4

更新 2

という名前の変数があるときはいつでも、引数に別の変数を指定してもvalue、それが常に使用されるようです。(を利用する)のヘルプ ファイルの「戦略」セクションでは、次の 2 つの手順について説明します。castvalue=guess_valuecast

  1. 値または (すべての) 列は存在しますか? だったらそれを使え
  2. それ以外の場合は、最後の列が値の列であると推測します

しかし、私が行ったいくつかのテストではvalue=、変数の名前を変更したり、データを再溶解したりせずに引数を正常に指定する方法がわかりません。

于 2012-06-17T15:47:31.347 に答える