まず、stackoverflow へようこそ。新しいユーザーがいてうれしいです。質問をするときは、使用しているコードと、元のように見える再現可能なデータ セットを提供することをお勧めします。これは、最小限の再現可能な例と呼ばれます。ここにデータ セットを取得するには、いくつかのオプションを使用できます。ここでは dput()
、オブジェクト名の前後で使用し、コンソールに表示されているものをカット アンド ペーストするか、データフレームを直接投稿します。コードについては、問題を再現するために必要なすべてのコードを提供してください。今後の質問の参考になれば幸いです。
完全には理解できないかもしれませんが、データを転置するのではなく、変換したいと思います。
dat <- data.frame(market=rnorm(10), date=rnorm(10), #let's create a data set
sitename=rnorm(10), impression=rnorm(10), clicks=rnorm(10))
dat #look at it (I pasted it below)
# > dat
# market date sitename impression clicks
# 1 -0.9593797 -0.08411994 1.6079129 -0.5204772 -0.31633966
# 2 -0.5088689 1.78799500 -0.2469315 1.3476964 -0.04344779
# 3 -0.1527465 0.81673996 1.7824969 -1.5531260 -1.28304384
# 4 -0.7026194 0.52072913 -0.1174356 0.5722210 -1.20474443
# 5 -0.4537490 -0.69139062 1.1124277 -0.2452974 -0.33025320
# 6 0.7466588 0.36318337 -0.4623319 -0.9036768 -0.65754302
# 7 0.8007612 2.59588554 0.1820732 0.4318629 -0.36308748
# 8 1.0781715 -1.01512734 0.2297475 0.9219439 -1.15687902
# 9 0.3731450 -0.19004572 0.5190749 -1.4020371 -0.97370295
# 10 0.7724259 1.76528303 0.5781786 -0.5490849 -0.83819036
#now to create the new columns (I think this is what you want)
#the easiest way is to use transform. ?tranform for more
dat.new <- transform(dat, sitename.clicks=sitename-clicks,
impression.clicks=impression-clicks)
dat.new #here's the new data set. Notice it has the new and old columns.
#To get rid of the old columns you can use indexing and specify the columns you want.
dat.new[, c(1:2, 6:7)]
#We could have also done:
dat.new[, c(1,2,6,7)]
#or said the columns not wanted with negative indexing:
dat.new[, -c(3:5)]
編集ブライアンのコメントと変数を見ると、長いものから広いものへの変換がポスターが望んでいるものだと思います。Wickham の reshape2 パッケージも使用してアプローチする可能性があります。この方法は私にとって作業が簡単で、R の初心者にとっても簡単だと思います。ただし、Brian が提供した同じデータ セットを使用して、ロング フォーマットからワイド フォーマットへ変換する基本的な方法を次に示します。
wide <- reshape(DF, v.names=c("impression", "clicks"), idvar=c("market", "date"),
timevar="sitename", direction="wide")
reshape(wide)
reshape 関数は非常に柔軟ですが、適切に使用するには慣れが必要です。この投稿の履歴を保持するために、以前の応答も残しておきますが、これは投稿者の意図ではないと今は信じています. 再現可能な例は、クエリを明確にするのに非常に役立つことを思い出してください。