如何将CSV文件加载到SPSS变量和值标签中

如何将CSV文件加载到SPSS变量和值标签中,spss,Spss,摘要 让我先说我是SPSS新手,如果我的术语不正确,我道歉。我有两个关于同一个调查的CSV文件(一个带有“变量标签”,一个带有“值标签”。我想将它们组合起来,而不必手动编写每个语法(如果可能) 1-带有值的CSV标签 respondent_id, I_am_between, I_am_happy 3470220950, 26-33 years old, Sometimes 3470226804, 34-41 years old, Very Often 3470226

摘要

让我先说我是SPSS新手,如果我的术语不正确,我道歉。我有两个关于同一个调查的CSV文件(一个带有“变量标签”,一个带有“值标签”。我想将它们组合起来,而不必手动编写每个语法(如果可能)

1-带有值的CSV标签

respondent_id,     I_am_between,  I_am_happy
3470220950,     26-33 years old,  Sometimes
3470226804,     34-41 years old,  Very Often
3470226906,     34-41 years old,  Sometimes
2-具有值的CSV

respondent_id,    I_am_between,     I_am_happy
3470220950,                  2,     3
3470226804,                  3,     4
3470226906,                  3,     3
我想做的是将“26-33岁”变量标签中的“我是”与“2”的值匹配起来。这在SPSS中是否可能(如果可能,如何实现)?谢谢


更新Jay的解决方案和评论:正如Jay的帖子中提到的,如果你想保持排名/顺序,第一种方法可能不会按照你喜欢的顺序加载答案。例如,一个问题“我曾经在公司工作过”可能会加载以下内容:(1='10年',3='3-5年'),而不是你想要的(1='最简单的方法是只导入第一个文件并使用自动重新编码。这样做的优点是简单,但缺点是重新编码的值可能不一定与文件2中的值匹配

GET DATA  /TYPE=TXT
  /FILE="file1.csv"
  /ENCODING='UTF8'
  /DELCASE=LINE
  /DELIMITERS=","
  /ARRANGEMENT=DELIMITED
  /FIRSTCASE=2
  /IMPORTCASE=ALL
  /VARIABLES=
  respondent_id F10.0
  V2 A15
  V3 A10.
CACHE.

AUTORECODE VARIABLES=V2 V3 
  /INTO I_am_between I_am_happy.

DELETE VARIABLES V2 V3.
或者,第二种方法是将两个文件导入单独的数据文件,使用add variables合并它们,然后使用STATS VALLBLS FROMDATA extension命令(您需要安装该命令)将一个变量的值作为标签应用于另一个变量

GET DATA  /TYPE=TXT
  /FILE="file2.csv"
  /ENCODING='Locale'
  /DELCASE=LINE
  /DELIMITERS=","
  /ARRANGEMENT=DELIMITED
  /FIRSTCASE=2
  /IMPORTCASE=ALL
  /VARIABLES=
  respondent_id F10.0
  I_am_between F2
  I_am_happy F2.
CACHE.

DATASET NAME DataSet1 WINDOW=FRONT.

GET DATA  /TYPE=TXT
  /FILE="file1.csv"
  /ENCODING='UTF8'
  /DELCASE=LINE
  /DELIMITERS=","
  /ARRANGEMENT=DELIMITED
  /FIRSTCASE=2
  /IMPORTCASE=ALL
  /VARIABLES=
  respondent_id F10.0
  V2 A15
  V3 A10.
CACHE.

DATASET NAME DataSet2 WINDOW=FRONT.

STAR JOIN 
  /SELECT t0.V2, t0.V3, t1.I_am_between, t1.I_am_happy 
  /FROM * AS t0 
  /JOIN 'DataSet1' AS t1 
    ON t0.respondent_id=t1.respondent_id 
  /OUTFILE FILE=*.

STATS VALLBLS FROMDATA VARIABLES=I_am_between I_am_happy LBLVARS=V2 V3 
/OPTIONS VARSPERPASS=20  
/OUTPUT EXECUTE=YES.

DELETE VARIABLES V2 V3.

非常感谢Jay!我使用了第一个解决方案,而自动重新编码完成了这个技巧。我不知道SPSS语法编辑器有多强大。作为对您更新的回应:我可能应该在下面的帖子中更明确一点-自动重新编码对标称字符串变量有用,但对自然排列顺序为var的变量不太有用变量按字母顺序重新编码。除了交换值标签,还需要重新编码任何顺序变量的值!根据数据集中变量的数量,使用我发布的第二个解决方案可能更容易。
GET DATA  /TYPE=TXT
  /FILE="file2.csv"
  /ENCODING='Locale'
  /DELCASE=LINE
  /DELIMITERS=","
  /ARRANGEMENT=DELIMITED
  /FIRSTCASE=2
  /IMPORTCASE=ALL
  /VARIABLES=
  respondent_id F10.0
  I_am_between F2
  I_am_happy F2.
CACHE.

DATASET NAME DataSet1 WINDOW=FRONT.

GET DATA  /TYPE=TXT
  /FILE="file1.csv"
  /ENCODING='UTF8'
  /DELCASE=LINE
  /DELIMITERS=","
  /ARRANGEMENT=DELIMITED
  /FIRSTCASE=2
  /IMPORTCASE=ALL
  /VARIABLES=
  respondent_id F10.0
  V2 A15
  V3 A10.
CACHE.

DATASET NAME DataSet2 WINDOW=FRONT.

STAR JOIN 
  /SELECT t0.V2, t0.V3, t1.I_am_between, t1.I_am_happy 
  /FROM * AS t0 
  /JOIN 'DataSet1' AS t1 
    ON t0.respondent_id=t1.respondent_id 
  /OUTFILE FILE=*.

STATS VALLBLS FROMDATA VARIABLES=I_am_between I_am_happy LBLVARS=V2 V3 
/OPTIONS VARSPERPASS=20  
/OUTPUT EXECUTE=YES.

DELETE VARIABLES V2 V3.