LISTSERV at the University of Georgia
Menubar Imagemap
Home Browse Manage Request Manuals Register
Previous messageNext messagePrevious in topicNext in topicPrevious by same authorNext by same authorPrevious page (November 2006)Back to main SPSSX-L pageJoin or leave SPSSX-L (or change settings)ReplyPost a new messageSearchProportional fontNon-proportional font
Date:         Mon, 20 Nov 2006 09:20:27 +0100
Reply-To:     Spousta Jan <JSpousta@CSAS.CZ>
Sender:       "SPSSX(r) Discussion" <SPSSX-L@LISTSERV.UGA.EDU>
From:         Spousta Jan <JSpousta@CSAS.CZ>
Subject:      Re: Problem with vectors
Comments: To: vlad simion <vlad.simion@gmail.com>
Content-Type: text/plain; charset="us-ascii"

:-)

The problem is perhaps that you demanded a "vector" (=one-dimensional structure) which I provided to you, but your matrix syntax indeed computes a matrix (=two dimensional structire).

On this list, you very often get exactly what you demand.

Greetings

Jan

-----Original Message----- From: SPSSX(r) Discussion [mailto:SPSSX-L@LISTSERV.UGA.EDU] On Behalf Of vlad simion Sent: Thursday, November 16, 2006 4:46 PM To: SPSSX-L@LISTSERV.UGA.EDU Subject: Re: Problem with vectors

Hi Jan,

thanks for your reply. sorry my mistake, I have indeed 22 cases. I tried your code and it runs perfect with no errorrs or warnings, but it does not give any figures for vector prod in the database. anyway I manage to do this with matrix language. here is the code, in case someone has any ideea how it can be optimized.

matrix. get x /var= var001 var002 var003 var004 var005 var006 var007 var008 var009 var010 var011 var012. compute y=make(ncol(x)-1,nrow(x)-1,0). compute base=x(nrow(x),ncol(x)). loop i=1 to 11. loop j=1 to 22. compute a=x(nrow(x),i). compute d=x(j,ncol(x)). compute y(i,j)=a*d/base. end loop. end loop. print y. end matrix.

many thanks once again Cheers.

vlad.

On 11/16/06, Spousta Jan <JSpousta@csas.cz> wrote: > > Hi Vlad, > > There seem to be some inconsistencies in your question, as 11 * 12 is > 132 and not 242 and your data has 22 cases and not 11 cases. Since 22 > * > 11 is equal to 242, I suppose that you think about 22 cases. > > My solution is not the most elegant one, but I tried to write it as > clear as possible: Prepare the data, connect them in a simple way and > use the common vector-loop trick. > > You can save the resulting variables prod1 to prod242 and merge them > to the original file or whatever you wish. > > Greetings > > Jan > > data list free (" ", TAB) / CASE_LBL (a6) var001 (comma5.2) > var002 (comma5.2) var003 (comma5.2) var004 (comma5.2) var005 > (comma5.2) > var006 (comma5.2) > var007 (comma5.2) var008 (comma5.2) var009 (comma5.2) var010 > (comma5.2) > var011 (comma5.2) > var012 (comma5.2) . > begin data. > @1.00 28 72 4.8 21.6 19.2 19.2 35.2 26.4 73.6 72 28 125 @2.00 29.51 > 70.49 2.46 21.31 19.67 18.03 38.52 23.77 76.23 69.67 30.33 > 122 > @3.00 30.89 69.11 4.07 20.33 18.7 20.33 36.59 24.39 75.61 69.92 30.08 > 123 > @4.00 28.33 71.67 2.5 19.17 19.17 21.67 37.5 21.67 78.33 70 30 120 > @5.00 30.08 69.92 4.07 20.33 19.51 18.7 37.4 24.39 75.61 69.92 30.08 > 123 > > @6.00 29.51 70.49 3.28 21.31 19.67 18.03 37.7 24.59 75.41 71.31 28.69 > 122 > @7.00 30 70 3.33 20.83 19.17 18.33 38.33 24.17 75.83 70.83 29.17 120 > @8.00 32.5 67.5 4.17 21.67 15.83 18.33 40 25.83 74.17 74.17 25.83 120 > @9.00 27.56 72.44 3.94 19.69 18.11 19.69 38.58 23.62 76.38 71.65 28.35 > 127 > @10.00 29.75 70.25 4.13 20.66 19.01 19.01 37.19 24.79 75.21 70.25 > 29.75 > 121 > @11.00 30.08 69.92 3.25 21.14 19.51 17.89 38.21 24.39 75.61 72.36 > 27.64 > 123 > @12.00 30.08 69.92 4.07 21.14 18.7 18.7 37.4 25.2 74.8 69.92 30.08 123

> @13.00 30.83 69.17 3.33 18.33 20 19.17 39.17 21.67 78.33 68.33 31.67 > 120 > > @14.00 28.69 71.31 4.1 20.49 18.85 18.03 38.52 24.59 75.41 72.95 27.05 > 122 > @15.00 30.08 69.92 4.07 20.33 17.89 18.7 39.02 24.39 75.61 71.54 28.46 > 123 > @16.00 30.89 69.11 4.07 21.14 18.7 18.7 37.4 25.2 74.8 69.92 30.08 123

> @17.00 28.93 71.07 4.13 21.49 19.01 18.18 37.19 25.62 74.38 69.42 > 30.58 > 121 > @18.00 32.06 67.94 3.82 20.61 20.61 17.56 37.4 24.43 75.57 70.23 29.77 > 131 > @19.00 30.08 69.92 4.07 21.14 18.7 18.7 37.4 25.2 74.8 70.73 29.27 123

> @20.00 28.33 71.67 4.17 19.17 19.17 19.17 38.33 23.33 76.67 73.33 > 26.67 120 @21.00 30.33 69.67 4.92 21.31 19.67 18.03 36.07 26.23 73.77 > 74.59 25.41 > 122 > @22.00 30 70 4.17 17.5 19.17 18.33 40.83 21.67 78.33 75.83 24.17 120 > mean 29.84 70.16 3.86 20.48 19 18.75 37.91 24.34 75.66 71.31 28.69 > 2694 end data. > exe. > save outfile = "origdata.sav". > > select if CASE_LBL = "mean ". > rename var (var001 to var012 = m1 to m12). > save outfile = "meanrow.sav" /keep m1 to m11. > > get file = "origdata.sav" /keep CASE_LBL var012. > temp. > select if CASE_LBL = "mean ". > save outfile = "grandmean.sav" /keep var012 /rename var012 = grandmean. > > get file = "origdata.sav" /keep CASE_LBL var012. > select if CASE_LBL ne "mean ". > FLIP VARIABLES=var012 /NEWNAME=CASE_LBL . > ren var (@1.00 to @22.00 = marg1 to marg22). > save outfile = "marginals.sav" /drop CASE_LBL . > > get file = "meanrow.sav" . > MATCH FILES /FILE=* > /FILE="grandmean.sav" /FILE="marginals.sav" . > EXECUTE. > > * end of data preparation. > vector m = m1 to m11. > vector marg = marg1 to marg22. > vector prod (242). > loop #i = 1 to 11. > loop #j = 1 to 22. > compute prod(22 * (#i - 1) + #j) = m(#i) * marg(#j) / grandmean. > end loop. > end loop. > > exe. > > > > -----Original Message----- > From: SPSSX(r) Discussion [mailto:SPSSX-L@LISTSERV.UGA.EDU] On Behalf > Of vlad simion > Sent: Thursday, November 16, 2006 12:29 PM > To: SPSSX-L@LISTSERV.UGA.EDU > Subject: Problem with vectors > > Hi everybody, > I have a data set that looks like this: > > CASE_LBL var001 var002 var003 var004 var005 var006 var007 var008 > var009 > var010 var011 var012 @1.00 28 72 4.8 21.6 19.2 19.2 35.2 26.4 73.6 > 72 28 > 125 @2.00 29.51 70.49 2.46 21.31 19.67 18.03 38.52 23.77 76.23 69.67 > 30.33 122 @3.00 30.89 69.11 4.07 20.33 18.7 20.33 36.59 24.39 75.61 > 69.92 30.08 123 @4.00 28.33 71.67 2.5 19.17 19.17 21.67 37.5 21.67 > 78.33 > 70 30 120 @5.00 30.08 69.92 4.07 20.33 19.51 18.7 37.4 24.39 75.61 > 69.92 > 30.08 123 @6.00 29.51 70.49 3.28 21.31 19.67 18.03 37.7 24.59 75.41 > 71.31 28.69 122 @7.00 30 70 3.33 20.83 19.17 18.33 38.33 24.17 75.83 > 70.83 29.17 120 @8.00 32.5 67.5 4.17 21.67 15.83 18.33 40 25.83 > 74.17 > 74.17 25.83 120 @9.00 27.56 72.44 3.94 19.69 18.11 19.69 38.58 23.62 > 76.38 71.65 28.35 127 @10.00 29.75 70.25 4.13 20.66 19.01 19.01 37.19 > 24.79 75.21 70.25 29.75 121 @11.00 30.08 69.92 3.25 21.14 19.51 17.89 > 38.21 24.39 75.61 72.36 27.64 123 @12.00 30.08 69.92 4.07 21.14 18.7 > 18.7 > 37.4 25.2 74.8 69.92 30.08 123 @13.00 30.83 69.17 3.33 18.33 20 19.17 > 39.17 21.67 78.33 68.33 31.67 120 @14.00 28.69 71.31 4.1 20.49 18.85 > 18.03 38.52 24.59 75.41 72.95 27.05 122 @15.00 30.08 69.92 4.07 20.33 > 17.89 18.7 39.02 24.39 75.61 71.54 28.46 123 @16.00 30.89 69.11 4.07 > 21.14 18.7 18.7 37.4 25.2 74.8 69.92 30.08 123 @17.00 28.93 71.07 > 4.13 > 21.49 19.01 18.18 37.19 25.62 74.38 69.42 30.58 121 @18.00 32.06 > 67.94 > 3.82 20.61 20.61 17.56 37.4 24.43 75.57 70.23 29.77 131 @19.00 30.08 > 69.92 4.07 21.14 18.7 18.7 37.4 25.2 74.8 70.73 29.27 123 @20.00 > 28.33 > 71.67 4.17 19.17 19.17 19.17 38.33 23.33 76.67 73.33 26.67 120 @21.00 > 30.33 69.67 4.92 21.31 19.67 18.03 36.07 26.23 73.77 74.59 25.41 122 > @22.00 > 30 70 4.17 17.5 19.17 18.33 40.83 21.67 78.33 75.83 24.17 120 mean > 29.84 > 70.16 3.86 20.48 19 18.75 37.91 24.34 75.66 71.31 28.69 2694 and I > would like to have a vector of 242 elements (number @cases=11*number > of > variables=12) in which to store the following values: > first element = 29.84*125/2694 > 2nd element = 29.84*122/2694 > 3rd element = 29.84*123/2694 > ............. > 11th element = 29.84*120/2694 > 12th element = 70.16*125/2694 > 13th element = 70.16*122/2694 > ............ > 22th element = 70.16*120/2694 > ........... > 241th element = 28.69*122/2694 > 242th element = 28.69*120/2694 > > does anyone have any suggestions? > > Many thanks. > > -- > Vlad Simion > Data Analyst > Tel: +40 720130611 >

-- Vlad Simion Data Analyst Tel: +40 720130611


Back to: Top of message | Previous page | Main SPSSX-L page