パッケージを使用して、長い形式のデータフレームを広い形式に変換しようとしdcast
ていreshape2
ます。私のデータフレームは以下のデータフレームのように見えます
X = c(3,2,3,3,2,3,3,2,3)
Y = c(-3, -1, -3, -3, -1, -3, -3, -1, -3)
DATA = c(100, 200, 300, 400, 100, 500, 600, 200, 300)
measurement = c("A", "A", "A", "B", "B", "B", "C", "C", "C")
DF <- data.frame(X, Y, DATA, measurement)
wideDF <- dcast(DF, X + Y ~ measurement, fun.aggregate = mean, value.var="DATA", drop = TRUE)
dcast
機能は完全に正常に動作しますが、時々私は、列名(のような上記のコードでは、私はハードコードにしたくないことをすべての列名の膨大なリストを持っているX + Y
)、私はベクトルとして列名を渡すしたいと思いますかしかし、それは私のコードを単純にします。dcast
関数を使用してこれを達成できますか、それ以外の関数はありますdcast
か?
数式を文字列として作成してから、 as.formula()
ではlhs
、私ではありませんすべての列名つかんだDATA
か、measurement
使用してのsetdiff()
。
library(reshape2)
lhs <- paste0(setdiff(names(DF), c("DATA", "measurement")), collapse = "+")
dcast(DF, as.formula(paste0(lhs, "~ measurement")), fun.aggregate = mean, value.var = "DATA", drop = TRUE)
# X Y A B C
# 1 2 -1 200 100 200
# 2 3 -3 200 450 450
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加