当前位置: 代码迷 >> java >> 读取Java的SPSS文件
  详细解决方案

读取Java的SPSS文件

热度:110   发布时间:2023-07-16 17:50:15.0
  SPSSReader reader = new SPSSReader(args[0], null);
            Iterator it = reader.getVariables().iterator();
            while (it.hasNext())
             {
                System.out.println(it.next());
            }

我正在使用此SPSSReader读取spss文件。 在这里,每个字符串都印有一些垃圾字符。

获得结果:

StringVariable: nameogr(nulltpc{)(10)
NumericVariable: weightppuo(nullf{nd)
DateVariable: datexsgzj(nulllanck)
DateVariable: timeppzb(null|wt{l)
DateVariable: datetimegulj{(null|ns)
NumericVariable: commissionyrqh(nullohzx)
NumericVariable: priceeub{av(nullvlpl)

预期结果 :

 StringVariable: name (10)
 NumericVariable: weight
 DateVariable: date
 DateVariable: time
 DateVariable: datetime
 NumericVariable: commission
 NumericVariable: price

提前致谢 :)

我尝试重新创建问题,然后发现了同样的事情。
考虑到该库具有许可(请参阅 ),我认为这可能是开发人员确保购买许可的一种方式,因为常规下载仅包含一个演示版本作为评估(请参阅 )。

由于该库较旧(该网站的版权为2003-2008,该库的要求为Java 1.2,未使用泛型,使用了Vector等),所以我建议您使用其他库,只要您不限于该库即可。在您的问题中使用。

快速搜索后,原来有一个开放源码的SPSS读者它也可通过Maven的 。

使用github页面上的示例,我将其组合在一起:

import com.bedatadriven.spss.SpssDataFileReader;
import com.bedatadriven.spss.SpssVariable;

public class SPSSDemo {

    public static void main(String[] args) {
        try {
            SpssDataFileReader reader = new SpssDataFileReader(args[0]);

            for (SpssVariable var : reader.getVariables()) {
                System.out.println(var.getVariableName());
            }

        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}

我找不到能够打印NumericVariable或类似内容的内容,但是由于这些是您在问题中使用的库的类名,因此我将假定这些内容不是SPSS标准化的。 如果是这样,您可以在库中找到类似的内容,也可以在github页面上打开问题。

使用的employees.sav文件,我使用开放源代码库从上面的代码中获得了此输出:

resp_id
gender
first_name
last_name
date_of_birth
education_type
education_years
job_type
experience_years
monthly_income
job_satisfaction

没有更多的字符了!

编辑有关评论:

那是对的。 虽然我通读了一些SPSS内容,但据我了解,只有字符串和数字变量,然后以不同的方式设置了格式。 在maven中发布的版本仅允许您访问变量的类型代码(说实话,不知道这是什么),但是github版本(不幸的是,它似乎在1.3版的SNAPSHOT上发布在maven中)和printformat已经引入。

您可以克隆或下载该库并运行mvn clean package (假设您已安装maven),并在项目中使用生成的库(位于target\\spss-reader-1.3-SNAPSHOT.jar )以使用方法SpssVariable#getPrintFormatSpssVariable#getWriteFormat可用。

那些返回SpssVariableFormat ,您可以从中获取更多信息。 由于我一无所知,因此我能做的最好的就是将您链接到的源代码, 那里对那里实现的东西的引用应该会进一步帮助您(我假设在SpssVariableFormat#getType文档中被SpssVariableFormat#getType可能最有助于确定您所使用的格式。

如果绝对没什么用,我猜你可以使用问题的库的演示版本来通过it.next().getClass().getSimpleName()确定内容it.next().getClass().getSimpleName() ,但是我只在有的情况下才使用没有其他方法可以确定格式。

我不确定,但是看着您的代码, it.next()返回的是Variable对象。

必须有一些方法可以链接到Variable对象,例如it.next().getLabel()it.next().getVariableName() 对象上的toString()并不总是有意义的。 检查SPSSReader库中Variable类的toString()方法。

  相关解决方案