HAllo,
vielen Dank für deine Mühe.
So ganz löst es mein Problem nicht, da ich ja für jeden Oberbegriff eine neue Variable anlegen muss und es ja auch sein kann, dass jemand mehrere Nennungen hat also z.B. ext und ous gesagt hat, was sich bei deinem Makro ja dann wieder überschreiben würde.
Na ja vielleicht muss ich dann ja doch für jede Kombination einzelne Zeilen schreiben...
String Variable codieren
-
- Beiträge: 2391
- Registriert: 06.02.2011, 19:58
re
So, emma78.
Würde das dein Problem lösen?
Gruß
Würde das dein Problem lösen?

Code: Alles auswählen
DATA LIST FREE / ID (f8.0) v1 (a20) v2 (a20) v3 (a20) v4 (a20) v5 (a20).
BEGIN DATA
1 haus ext hose hemd schlips
2 ext house hose tower pferd
3 tower house ext schaukel schlips
END DATA.
BEGIN PROGRAM.
import spss
v_0=(['ouse', 'ous', 'use'])
v_1=(['ext', 'tex', 'te','xt'])
v_2=(['ower', 'auk', 'ips','ups','aps'])
v_3=(['sonst', 'sonst', 'nichts','nix','hallo','sechs'])
v_list = [v_0, v_1, v_2, v_3]
for i in range(len(v_list)):
name=v_list[i]
print name
for k in range(len(name)):
variable=name[k]
print variable
spss.Submit(r"""
do repeat #i =v1 to v5.
if INDEX(#i,'"""+variable+"""') >0 v_"""+str(i)+"""=1.
end repeat.
EXECUTE .
""")
END PROGRAM.
drfg2008
-
- Beiträge: 2391
- Registriert: 06.02.2011, 19:58
re
wie ich gerade feststelle, hatte dir Bruce Weaver (uga edu) schon eine Antwort auf deine Frage gegeben.
https://groups.google.com/forum/#!topic ... discussion
???
Gruß
https://groups.google.com/forum/#!topic ... discussion
???
Code: Alles auswählen
DATA LIST FREE / ID (f8.0) v1 (a20) v2 (a20) v3 (a20) v4 (a20) v5 (a20).
BEGIN DATA
1 haus ext hose hemd schlips
2 ext house hose tower pferd
3 tower house ext schaukel schlips
END DATA.
numeric text house tower (f1.0). /* the flag variables.
recode text to tower (else=0). /* initialize to zero.
vector haystack = v1 to v5. /* the original string variables.
do repeat
needle = "ext" "ous" "tow" "wer" /
flag = text house tower tower .
- loop # = 1 to 5.
- if not flag flag = index(haystack(#),needle) GT 0.
- end loop if flag.
end repeat.
EXECUTE .
drfg2008