2012-06-05 2 views
1

여기에서 완전히 새로 워진 R입니다. SPSS 데이터 세트에서 몇 가지 복잡한 다항식을 풀기 위해 SPSS에서 R을 실행했습니다. 내가 다시 SPSS로 R의 결과를 얻을 수 있었다, 그러나 그것은 매우 우아 과정이었다R에서 값 전달 (SPSS에서 실행) SPSS 데이터 세트 열기

begin program R. 
z <- polyroot(unlist(spssdata.GetDataFromSPSS(variables=c("qE","qD","qC","qB","qA"),cases=1),use.names=FALSE)) 
otherVals <- spssdata.GetDataFromSPSS(variables=c("b0","b1","Lc","tInv","sR","c0","c1","N2","xBar","DVxSq"),cases=1) 
b0<-unlist(otherVals["b0"],use.names=FALSE) 
b1<-unlist(otherVals["b1"],use.names=FALSE) 
Lc<-unlist(otherVals["Lc"],use.names=FALSE) 
tInv<-unlist(otherVals["tInv"],use.names=FALSE) 
sR<-unlist(otherVals["sR"],use.names=FALSE) 
c0<-unlist(otherVals["c0"],use.names=FALSE) 
c1<-unlist(otherVals["c1"],use.names=FALSE) 
N2<-unlist(otherVals["N2"],use.names=FALSE) 
xBar<-unlist(otherVals["xBar"],use.names=FALSE) 
DVxSq<-unlist(otherVals["DVxSq"],use.names=FALSE) 
z2 <- Re(z[abs(c(abs(b0+b1*Re(z)-tInv*sR*sqrt(1/(c0+c1*Re(z))^2+1/N2+(Re(z)-xBar)^2/DVxSq))-Lc))==min(abs(c(abs(b0+b1*Re(z)-tInv*sR*sqrt(1/(c0+c1*Re(z))^2+1/N2+(Re(z)-xBar)^2/DVxSq))-Lc)))]) 
varSpec1 <- c("Xd","Xd",0,"F8","scale") 
dict <- spssdictionary.CreateSPSSDictionary(varSpec1) 
spssdictionary.SetDictionaryToSPSS("results", dict) 
new = data.frame(z2) 
spssdata.SetDataToSPSS("results", new) 
spssdictionary.EndDataStep() 
end program. 

솔직히, 그것은 대부분 어느 정도 관련 예에서 함께 재현되고 그것이 있어야하는 것보다 더 복잡한 것 같다. R에 의해 생성 된 새로운 데이터 세트를 가져와 원본 데이터 세트로 MATCH 파일을 실행해야했습니다. 내가하고 싶은 것은 a) SPSS에서 R로 숫자를 가져 와서 b) 조작하여 특정 기준에 맞는 다중 뿌리를 찾아 내고 c) 결과를 SPSS 데이터 세트에 다시 넣으십시오. 이전 데이터

나는 이것을 더 간단하게 만들 수있는 것이 누락 되었습니까? 명심이 시도 밖에서 제로 연구 경험을 가지고 있지만 SPSS와 matlab 프로그래밍에 괜찮은 경험이 있습니다.

미리 도움을 주셔서 감사합니다.

답변

2

SPSS의 R은 새로운 SPSS 데이터 세트를 만들 수 있지만 기존 SPSS 데이터 세트를 수정할 수는 없습니다. R의 데이터가 활성 SPSS 데이터 세트와 차원이 일치하지 않는 경우가 많이 있습니다. 따라서 위의 api를 사용하여 사전 및 데이터 프레임을 만든 다음 다시 일치해야하는 경우 SPSS 측에서 적절한 작업을 수행해야합니다. [email protected]에서 SPSS에 대한 개선 요청을 제출할 수도 있습니다.

+0

오, 그래서 내가하는 일은 유일한 방법이었습니다. 팁 주셔서 감사합니다 - 나는 단지 해결책을 찾기 위해 얼마나 많은 시간을 낭비했는지 짐작할 수 있습니다. 추가 질문 : SPSS 구문의 문자열을 R로 작성하여 SPSS 구문 창으로 보낼 수 있습니까? 이는 훌륭한 해결 방법입니다. COMPUTE 명령을 생성하고 SPSS에서 실행하십시오. R에서 .sps 파일을 만든 다음 SPSS에서 실행되도록 보낼 수는 있지만 파일 구조가 다른 다양한 네트워크 PC에서 작업하고 권한을 쓰기 때문에 임시 파일을 HD로 작성하는 것에 대한 개인적인 편견이 있습니다. – DocBuckets