Прежде всего, я хотел бы заранее извиниться, если я не буду очень ясен в своем вопросе. Я совершенно новичок в R, и моя терминология не будет такой хорошей.
Мы получаем файл SPSS от внешней компании, который содержит данные опроса. У нас есть R-скрипт для извлечения данных и записи их в CSV-файл. Это прекрасно работает.
Вторая часть скрипта создает файл в стиле INI для всех возможных ответов. Например, для AGE у нас будет что-то вроде
[ AGE ]
1 = Under 13
2 = 13 - 15
3 = 15 - 25
4 = 25+
Файл CSV будет иметь одну из 1, 2, 3 или 4 для каждой строки. До недавнего времени все возможные ответы нумеровались с 1, а теперь некоторые из них начинаются с 0. Поэтому хотелось бы иметь что-то вроде:
[ AGE ]
0 = Under 13
1 = 13 - 15
2 = 15 - 25
3 = 25+
Ниже приведен текущий код R, который мы используем. Я знаю, где что-то не так, но я не знаю, как это исправить.
data<-read.spss(inputFile, to.data.frame=TRUE);
fileOut<- file(valuesExportFile, "w");
for (name in names(data)) {
cat("[", name,"]\n", file=fileOut);
variableValues<-levels(data[[name]]);
numberOfValues<-nlevels(data[[name]]);
if (numberOfValues > 0) {
for (i in 1:numberOfValues) {
cat(i, '= "', variableValues[i], '"', "\n", file=fileOut);
}
}
};
close(fileOut);
Я потратил полтора дня на гугление и пробовал разные подходы. Я нашел perl-скрипт spssread.pl, который извлекает данные так, как нам нужно, но по какой-то причине все имена меток в верхнем регистре, что неприемлемо, поскольку они чувствительны к регистру. Я буду продолжать смотреть на этот скрипт, а пока я хотел бы посмотреть, есть ли решение с использованием R, так как это то, что мы уже используем, и было бы неплохо иметь все в одном скрипте.
Итак, есть предложения?
cat(i-1,...)
? - person joran   schedule 30.04.2012-1
, который предложил @joran, или есть другие проблемы? - person Tommy   schedule 30.04.2012cat(i-1,...)
, потому что некоторые начинаются с 1, а некоторые начинаются с 0. Если я открою файл данных с помощью PSPP и посмотрю на вкладку Variable View, я увижу, что значения упорядочены правильно, некоторые начинаются с 0, а некоторые начинаются с 0. с 1. Так что я думаю, должен быть способ извлечь эту информацию из файла SPSS. - person giuliot   schedule 01.05.2012as.data.frame=TRUE
вread.spss
? Согласно странице справки, есть атрибутlabel.table
, который содержит (возможно, больше) информации о метках значений, чем то, что содержит data.frame. - person Brian Diggs   schedule 01.05.2012label.table
, не сработало, это как бы направило меня в правильном направлении. - person giuliot   schedule 02.05.2012