환영 인사를 시작하겠습니다. 새 사용자가있어서 기쁘다. 질문 할 때 사용중인 코드와 원본처럼 보이는 재현 가능한 데이터 세트를 제공하는 것이 유용하고 권장됩니다. 이것은 최소한의 재현 가능한 예제라고합니다. 여기에 데이터 세트를 얻으려면 몇 가지 옵션을 사용할 수 있습니다. 여기에는 두 가지가 있습니다 : 객체 이름을 중심으로 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 초보자도 쉽게 사용할 수 있다고 상상해보십시오.
이
wide <- reshape(DF, v.names=c("impression", "clicks"), idvar=c("market", "date"),
timevar="sitename", direction="wide")
reshape(wide)
모양 변경 기능은 매우 유연하지만, 일부는 적절하게 사용하는 데 익숙해 취 그러나, 여기에 동일한 데이터가 브라이언 제공 설정하여 다양한 형식으로 오래 할 수있는 기본 방법입니다. 나는 이것이 포스터의 의도가 아니라고 지금 믿지만이 포스트의 역사를 지키기 위해 나의 이전 응답을 남겨 둘 것입니다. 재현 할 수있는 예제는 쿼리를 명확하게 설명하는 데 매우 유용하다는 것을 상기시키는 역할을합니다.
'reshape' 또는'reshape' 패키지에서'cast' 나'melt' 같은 것을 찾고 있습니다. SAS에 익숙하지 않아서 당신이 제공 한 기능의 출력이 무엇인지 확신 할 수 없습니다. 입력 데이터와 원하는 출력의 작은 샘플을 제공 할 수 있습니까? – Justin
아, 포스터가 와이드에서 오랫동안 가고 싶어 할 수도 있습니다. 그럴 경우 내 대답을 무시하십시오. –
@Justin 변수 이름을 보면 제안이 가장 이해가되지만 포스터가 보유하고있는 데이터 세트와 기대하는 것 (또는 보유한 데이터의 표현)을 제공 할 때까지 내 대답을 편집하지 않을 것입니다 –