我正在尝试以.sav编程方式创建文件,而无需使用SPSS自动化(SPSS.BackendAPI库)以释放更多SPSS许可证.我发现CodePlex上的这个库使用32位I/O模块而不需要许可证,这很好.
问题是我需要将应用程序构建为x64,以便在我自己的应用程序中访问额外的可寻址内存.因此,我也需要使用64位库.有没有人在托管代码中使用64位库有好运?
我试过read.spps(),但是我得到了一个编码错误:
> library(foreign)
> read.spss('persona.sav')
re-encoding from CP1252
Error in iconv(names(rval), cp, "") :
unsupported conversion from 'CP1252' to ''
In addition: Warning message:
In read.spss("persona.sav") :
persona.sav: Unrecognized record type 7, subtype 18 encountered in system file
Run Code Online (Sandbox Code Playgroud) 我有很多名字的变量
PRE_adam
POST_adam
PRE_betty
POST_betty
PRE_clara
POST_clara
...
Run Code Online (Sandbox Code Playgroud)
对于很多人的名字.
我想计算之间的差异PRE_X和POST_X对名单X的S -是这样的:
COMPUTE DIFF_adam = POST_adam - PRE_adam
COMPUTE DIFF_betty = POST_betty - PRE_betty
COMPUTE DIFF_clara = POST_clara - PRE_clara
Run Code Online (Sandbox Code Playgroud)
有没有办法在循环中执行此操作?像这样的东西:
DO REPEAT x= adam betty clara
COMPUTE !concat('DIFF_',x) = !concat('POST_',x) - !concat('PRE_',x)
END REPEAT
Run Code Online (Sandbox Code Playgroud) RStudio 提供了一个很好的函数View(使用大写V)来查看数据,但是使用 R 在大型数据集中获取方向仍然很困难。最常见的选项是...
names(df)str(df)如果您来自 SPSS,那么 R 在这方面似乎是降级的。我想知道是否有更方便用户的选择?我没有找到现成的解决方案,所以我想与您分享我的解决方案。
我在 SPSS 中有很多列,为了进行计算,我需要获得每一列的总和。SPSS中有没有办法做到这一点?
我的意思的一个例子如下所示:
age gender question 1 question 2
-------------------------------------------------
25 m 2 3
19 f 4 2
20 f 3 4
------- -------
need sum need sum
Run Code Online (Sandbox Code Playgroud) 基本上,我尝试从 savReaderWriter 模块运行一些 Python 代码,以便创建一个可以在 IBM SPSS 中打开的 .sav 文件。作为 macOS 用户,我需要首先在终端中运行这两行以使模块正常工作:
echo 'export DYLD_LIBRARY_PATH=/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/savReaderWriter/spssio/macos' >> ~/.bash_profile
echo 'export LC_ALL=en_US.UTF-8' >> ~/.bash_profile
Run Code Online (Sandbox Code Playgroud)
下面你可以看到我尝试在 Python 中运行的一段代码:
import savReaderWriter
savFileName = "someFile.sav"
records = [['Test1', 1, 1], ['Test2', 2, 1]]
varNames = ['var1', 'v2', 'v3']
varTypes = {'var1': 5, 'v2': 0, 'v3': 0}
with savReaderWriter.SavWriter(savFileName, varNames, varTypes, ioUtf8=True) as writer:
for record in records:
writer.writerow(record)
Run Code Online (Sandbox Code Playgroud)
我的问题是,虽然通过 Terminal.app 在 Python 中运行代码就像一个超级按钮,并且出现一个新的 .sav 文件,但尝试在 IDE 中执行完全相同的代码(尝试过 PyCharm 和 Spyder)会出现错误:
Traceback (most recent call last): …Run Code Online (Sandbox Code Playgroud) 如何将 .sav 转换为 .csv,或将 .sav 转换为 pandas DataFrame?有没有直接的方法或可以做到这一点或有一个包可以做到这一点?
对一组数据进行ROC分析后,如何计算p-value?通过同样的统计,我看到SPSS中可以输出p值。示例代码如下:
library(pROC)
data(aSAH)
head(aSAH)
# gos6 outcome gender age wfns s100b ndka
# 29 5 Good Female 42 1 0.13 3.01
# 30 5 Good Female 37 1 0.14 8.54
# 31 5 Good Female 42 1 0.10 8.09
# 32 5 Good Female 27 1 0.04 10.42
# 33 1 Poor Female 42 3 0.13 17.40
# 34 1 Poor Male 48 2 0.10 12.75
(rr <- roc(aSAH$outcome, aSAH$s100b, plot=T))
# Setting levels: control = Good, case = Poor …Run Code Online (Sandbox Code Playgroud) 在 SPSS 11 中可以指定相对路径。例子:
FILE HANDLE myfile='..\..\data\current.txt' /LRECL=533.
DATA LIST FILE=myfile /
...
Run Code Online (Sandbox Code Playgroud)
这之所以有效,是因为 SPSS 11 将工作文件夹设置为保存源文件的路径.SPS。看来SPSS 18总是将其工作文件夹设置为SPSS本身的安装文件夹。这根本不是一回事。
有没有办法改变这种行为?或者我是否坚持将所有内容更改为绝对文件名?
我正在使用该haven库将.sav(SPSS) 文件读入 R。
某些值读取为labelled vector.
这是一个例子:
> str(df$instructional_practice)
Class 'labelled' atomic [1:4136] 2 2 6 6 8 8 NaN NaN 17 1 ...
..- attr(*, "label")= chr "intructional practice teacher is using when signaled"
..- attr(*, "format.spss")= chr "F8.2"
..- attr(*, "labels")= Named num [1:18] 1 2 3 4 5 6 7 8 9 10 ...
.. ..- attr(*, "names")= chr [1:18] "1 Lecture" "2 Seatwk-Ind" "3 Review-Ind" "4 Seatwk-Grp" ...
Run Code Online (Sandbox Code Playgroud)
如何vector获得标签名称的值?