Se você tem o Stata 13, então você pode carregá-lo e salvá-lo como um formato Stata 12 usando o comando saveback (veja help save). Depois, leve para R. Se você tiver, Stata 10 - 12, você pode usar o comando user-written use13. (Por Sergiy Radyakin) para carregá-lo e salvá-lo lá, em seguida, para R. Você pode instalar o uso13 executando ssc install use13. Outras alternativas, ainda com o Stata, envolvem a exportação do formato Stata para outra coisa que R lerá, p. ex. Arquivos baseados em texto. Veja a ajuda exportada no Stata. Iniciando o Stata 14, o saveold tem uma opção de versão (), permitindo que seja salvo nos formatos Stata. dta tão antigos como Stata 11.R Data ImportExport R Data ImportExport 1 Introdução Leitura de dados em um sistema estatístico para análise e exportação dos resultados para algum outro O sistema para a redação de relatórios pode ser uma tarefa frustrante que pode levar muito mais tempo do que a análise estatística em si mesmo, embora a maioria dos leitores ache mais atraente. Este manual descreve as instalações de importação e exportação disponíveis em R ou em pacotes que estão disponíveis no CRAN ou em outro lugar. Salvo indicação em contrário, tudo descrito neste manual é (pelo menos em princípio) disponível em todas as plataformas que correm R. Em geral, sistemas estatísticos como R não são particularmente adequados para manipulações de dados em grande escala. Alguns outros sistemas são melhores do que R, e parte do impulso deste manual é sugerir que, ao invés de duplicar a funcionalidade em R, podemos fazer outro sistema fazer o trabalho (por exemplo, o Therneau amp Grambsch (2000) comentou que eles preferiam Faça manipulação de dados no SAS e, em seguida, use a sobrevivência do pacote em S para a análise.) Os sistemas de manipulação de banco de dados são muitas vezes muito adequados para manipular e extrair dados: vários pacotes para interagir com SGBDs são discutidos aqui. Existem pacotes para permitir a funcionalidade desenvolvida em linguagens como Java. Perl e python para serem integrados diretamente com o código R, tornando ainda mais apropriado o uso de instalações nesses idiomas. (Veja o pacote rJava do CRAN e o SJava. Pacotes RSPerl e RSPython do projeto Omegahat, omegahat.) Também vale a pena lembrar que R like S vem da tradição Unix de pequenas ferramentas reutilizáveis, e pode ser gratificante Use ferramentas como awk e perl para manipular dados antes da importação ou após a exportação. O estudo de caso em Becker, Chambers amp Wilks (1988, Capítulo 9) é um exemplo disso, onde as ferramentas Unix foram usadas para verificar e manipular os dados antes da entrada para S. As ferramentas tradicionais do Unix estão agora muito mais amplamente disponíveis, inclusive para Janelas. Este manual foi escrito pela primeira vez em 2000, e o número de escopo dos pacotes R aumentou cem vezes. Para os formatos de dados especializados, vale a pena procurar se um pacote adequado já existe. Codificações 1.1.1 A menos que o arquivo a ser importado seja inteiramente em ASCII. Geralmente é necessário saber como foi codificado. Para arquivos de texto, uma boa maneira de descobrir algo sobre sua estrutura é a ferramenta de linha de comando do arquivo (para Windows, incluída no Rtools). Isso relata algo como sistemas modernos do Unix, incluindo macos, provavelmente produzirão arquivos UTF-8. O Windows pode produzir o que ele chama de arquivos lsquoUnicodersquo (UCS-2LE ou possivelmente UTF-16LE 1). Caso contrário, a maioria dos arquivos estará em uma codificação de 8 bits a menos que de uma localidade coreana chinesaJapanês (que possui uma ampla gama de codificações de uso comum). Não é possível detectar automaticamente com certeza qual codificação de 8 bits (embora as suposições possam ser possíveis e o arquivo pode adivinhar como fez no exemplo acima), então você pode simplesmente pedir ao originador algumas pistas (por exemplo, lsquoRussian no Windowsrsquo ). LsquoBOMsrsquo (Byte Order Marks, en. wikipedia. orgwikiByteordermark) causam problemas para arquivos Unicode. No mundo do Unix, as listas de materiais raramente são usadas, enquanto que no mundo do Windows quase sempre são para arquivos UCS-2UTF-16 e muitas vezes são para arquivos UTF-8. O utilitário de arquivo nem sequer reconhece os arquivos UCS-2 sem uma BOM, mas muitos outros utilitários se recusarão a ler arquivos com uma lista técnica e os padrões IANA para UTF-16LE e UTF-16BE proíbem. Muitas vezes, temos sido reduzidos a olhar para o arquivo com o utilitário de linha de comando od ou um editor hexadecimal para elaborar sua codificação. Observe que utf8 não é um nome de codificação válido (UTF-8 é), e o macintosh é o nome mais portátil para o que às vezes é chamado de codificação lsquoMac Romanrsquo. 1.2 Exportar para arquivos de texto Exportar resultados de R geralmente é uma tarefa menos controversa, mas ainda há uma série de armadilhas. Haverá um aplicativo alvo em mente, e muitas vezes um arquivo de texto será o veículo de intercâmbio mais conveniente. (Se for necessário um arquivo binário, consulte Arquivos binários.) O gato da função está subjacente às funções para exportação de dados. Demora um argumento de arquivo e o argumento de anexação permite que um arquivo de texto seja escrito através de chamadas sucessivas para o gato. Melhor, especialmente se isso for feito muitas vezes, é abrir uma conexão de arquivo para escrever ou anexar, e dirigir-se a essa conexão e fechá-la. A tarefa mais comum é escrever uma matriz ou quadro de dados para arquivo como uma grade retangular de números, possivelmente com rótulos de linha e coluna. Isso pode ser feito pelas funções write. table e write. A função write apenas escreve uma matriz ou vetor em um número especificado de colunas (e transpõe uma matriz). A função write. table é mais conveniente e grava um quadro de dados (ou um objeto que pode ser coagido em uma moldura de dados) com rótulos de linha e coluna. Há uma série de questões que precisam ser consideradas ao escrever um quadro de dados para um arquivo de texto. A maioria das conversões de números reaiscomplexos feitos por essas funções é para precisão total, mas aqueles por gravação são regidos pela configuração atual de opções (dígitos). Para obter mais controle, use o formato em um quadro de dados, possivelmente coluna por coluna. R prefere a linha de cabeçalho para não ter entrada para os nomes das linhas, então o arquivo parece que alguns outros sistemas requerem uma entrada (possivelmente vazia) para os nomes das linhas, que é o que write. table fornecerá se o argumento col. names NA for especificado . O Excel é um desses sistemas. Um separador de campo comum para usar no arquivo é uma vírgula, pois é improvável que apareça em qualquer um dos campos nos países de língua inglesa. Esses arquivos são conhecidos como arquivos CSV (valores separados por vírgula) e a função wrapper write. csv fornece padrões apropriados. Em algumas localidades, a vírgula é usada como ponto decimal (defina isto em write. table por dec quot, quot) e os arquivos CSV usam o ponto-e-vírgula como o separador de campos: use write. csv2 para padrões apropriados. Existe um padrão IETF para arquivos CSV (que exige vírgulas e finais de linha CRLF, para o qual use eol quotrnquot), RFC4180 (veja tools. ietf. orghtmlrfc4180), mas o que é mais importante na prática é que o arquivo é legível pelo aplicativo É direcionado para. Usar um ponto-e-vírgula ou guia (sep quottquot) são provavelmente as opções mais seguras. Por padrão, os valores em falta são exibidos como NA. Mas isso pode ser alterado pelo argumento na. Observe que NaN s são tratados como NA por write. table. Mas não por gato nem escreva. Por padrão, as seqüências de caracteres são citadas (incluindo os nomes das linhas e das colunas). Controles de cotação de argumento se as variáveis de caráter e fator são citadas: alguns programas, por exemplo, Mondrian (en. wikipedia. orgwikiMondrian (software). Não aceita cordas citadas. Alguns cuidados são necessários se as strings contiverem citações incorporadas. Três formas úteis são o segundo É a forma de escape comumente usada por planilhas. Os arquivos de texto não contêm metadados em suas codificações, portanto, para dados não-ASCII, o arquivo precisa ser direcionado para o aplicativo destinado a lê-lo. Todas essas funções podem escrever para uma conexão que Permite que uma codificação seja especificada para o arquivo e write. table tenha um argumento FileEncoding para tornar isso mais fácil. A parte difícil é saber o que a codificação do arquivo deve usar. Para uso no Windows, é melhor usar o que o Windows chama de lsquoUnicodersquo 2 Isso é quotUT-16LEquot. O uso do UTF-8 é uma boa maneira de fazer arquivos portáteis que não serão facilmente confundidos com qualquer outra codificação, mas mesmo as aplicações MacOS (onde UTF-8 é a codificação do sistema) podem não reconhecê-las e Ganhar É improvável que as aplicações de dows sejam mais improváveis. Aparentemente, o Excel: mac 20048 esperava arquivos. csv na codificação quotmacromanquot (a codificação utilizada em versões muito anteriores do Mac OS). Função write. matrix no pacote MASS fornece uma interface especializada para escrever matrizes, com a opção de redigi-las em blocos e assim reduzir o uso da memória. É possível usar a pia para desviar a saída R padrão para um arquivo e assim capturar a saída de instruções de impressão (possivelmente implícitas). Esta não é geralmente a rota mais eficiente, e a configuração das opções (largura) pode precisar ser aumentada. Função write. foreign no pacote estrangeiro usa write. table para produzir um arquivo de texto e também grava um arquivo de código que irá ler este arquivo de texto em outro pacote estatístico. Atualmente, há suporte para exportar para o SAS. SPSS e Stata. Ao ler dados de arquivos de texto, é responsabilidade do usuário saber e especificar as convenções usadas para criar esse arquivo, p. ex. O caractere de comentário, se uma linha de cabeçalho está presente, o separador de valores, a representação de valores faltantes (e assim por diante) descritos em Exportar para arquivos de texto. Uma linguagem de marcação que pode ser usada para descrever não só o conteúdo, mas também a estrutura do conteúdo pode fazer um arquivo autodescriminar, de modo que não é necessário fornecer esses detalhes ao software que lê os dados. O ndash eXtensible Markup Language mais comumente conhecido simplesmente como ndash XML pode ser usado para fornecer essa estrutura, não apenas para conjuntos de dados padrão, mas também estruturas de dados mais complexas. O XML está se tornando extremamente popular e está emergindo como um padrão para a marcação geral de dados e troca. Está sendo usado por diferentes comunidades para descrever dados geográficos, como mapas, displays gráficos, matemática e assim por diante. O XML fornece uma maneira de especificar a codificação do filersquos, e. Embora não o exija. O pacote XML fornece facilidades gerais para ler e escrever documentos XML dentro de R. O pacote StatDataML no CRAN é um exemplo de construção em XML. Outra interface para a biblioteca libxml2 C é fornecida pelo pacote xml2. Yaml é outro sistema para estruturar dados de texto, com ênfase na legibilidade humana: é suportado pelo pacote yaml. 2 Dados semelhantes a planilha Em Exportar para arquivos de texto, vimos uma série de variações no formato de um arquivo de texto semelhante a uma planilha, no qual os dados são apresentados em uma grade retangular, possivelmente com rótulos de linhas e colunas. Nesta seção consideramos a importação de tais arquivos em R. 2.1 Variações em read. table A função read. table é a maneira mais conveniente de ler em uma grade retangular de dados. Devido às muitas possibilidades, existem várias outras funções que chamam read. table, mas alteram um grupo de argumentos padrão. Tenha em atenção que read. table é uma maneira ineficiente de ler em matrizes numéricas muito grandes: veja a varredura abaixo. Alguns dos problemas a considerar são: se o arquivo contiver campos de caracteres não-ASCII, verifique se ele está lido na codificação correta. Este é principalmente um problema para a leitura de arquivos latino-1 em uma localidade UTF-8, o que pode ser feito por algo como Observação, isso funcionará em qualquer localidade que possa representar cordas latino-1, mas não muitos locais de origem japonesa grego russa. Recomendamos que você especifique o argumento do cabeçalho de forma explícita. Convencionalmente, a linha de cabeçalho possui entradas apenas para as colunas e não para os rótulos de linha, assim como um campo menor do que as linhas restantes. (Se R vê isso, ele define o cabeçalho TRUE.) Se apresentado com um arquivo que tenha um campo de cabeçalho (possivelmente vazio) para os rótulos de linha, lê-lo por algo como nomes de colunas podem ser explicitamente explicados através dos nomes explícitos de col. names Substituir a linha de cabeçalho (se presente). Normalmente, olhar para o arquivo determinará o separador de campo a ser usado, mas com arquivos separados em espaço branco pode haver uma escolha entre o quotquot padrão que usa qualquer espaço em branco (espaços, guias ou linhas novas) como um separador, E sep quottquot. Observe que a escolha do separador afeta a entrada das cordas citadas. Se você tiver um arquivo delimitado por tabulação contendo campos vazios, certifique-se de usar sep quottquot. Por padrão, as cadeias de caracteres podem ser citadas por lsquo quot rsquo ou lsquo rsquo e, em cada caso, todos os caracteres até uma cotação correspondente são considerados como parte da seqüência de caracteres. O conjunto de caracteres de citação válidos (que pode ser nenhum) é controlado pelo argumento da citação. Para o quinto ponto, o padrão é alterado para citar o quotquot. Se nenhum caractere de separador for especificado, aspas podem ser escapadas dentro das cordas citadas imediatamente antes delas por lsquo rsquo, estilo C. Se um caractere separador for especificado, aspas podem ser escapadas dentro das cadeias cotadas dobrando-as como é convencional nas planilhas. Por exemplo, isso não funciona com o separador padrão. Por padrão, o arquivo é suposto conter a seqüência de caracteres NA para representar valores faltantes, mas isso pode ser alterado pelo argumento na. strings. Que é um vetor de uma ou mais representações de personagens de valores faltantes. Os campos vazios em colunas numéricas também são considerados valores faltantes. Em colunas numéricas, os valores de NaN. O Inf e o Inf são aceitos. É bastante comum que um arquivo seja exportado de uma planilha para que todos os campos vazios (e seus separadores) sejam omitidos. Para ler esses arquivos, configure o preenchimento TRUE. Espaço em branco em campos de caracteres Se um separador for especificado, o espaço em branco principal e posterior em campos de caracteres é considerado parte do campo. Para retirar o espaço, use a tira de argumento. blanco VERDADEIRO. Por padrão, read. table ignora linhas vazias. Isso pode ser alterado definindo blank. lines. skip FALSE. Que só será útil em conjunto com o preenchimento TRUE. Talvez para usar linhas em branco para indicar os casos em falta em um layout regular. A menos que você tome qualquer ação especial, read. table lê todas as colunas como vetores de caracteres e, em seguida, tenta selecionar uma classe adequada para cada variável no quadro de dados. Isso, por sua vez, é lógico. Inteiro. Numérico e complexo. Movendo-se se alguma entrada não faltar e não pode ser convertida. 3 Se tudo isso falhar, a variável é convertida em um fator. Argumentos colClasses e as. is fornecem um maior controle. Especificar as. is TRUE suprime a conversão de vetores de caracteres para fatores (somente). O uso de colClasses permite que a classe desejada seja definida para cada coluna na entrada: será mais rápido e usará menos memória. Observe que colClasses e as. is são especificados por coluna, não por variável, e, portanto, inclua a coluna de nomes de linha (se houver). Por padrão, read. table usa lsquo rsquo como um caractere de comentário, e se isso for encontrado (exceto em cadeias cotadas) o resto da linha é ignorada. Linhas contendo apenas espaço em branco e um comentário são tratadas como linhas em branco. Se soubesse que não haverá comentários no arquivo de dados, é mais seguro (e pode ser mais rápido) para usar comment. char quotquot. Muitos sistemas operacionais possuem convenções para usar a barra invertida como um caractere de escape em arquivos de texto, mas o Windows não faz (e usa barra invertida em nomes de caminho). É opcional em R se tais convenções são aplicadas aos arquivos de dados. Tanto o read. table como a varredura têm um argumento lógico para permitir paisagens. Isso é falso por padrão e as barras invertidas são interpretadas apenas como (sob as circunstâncias descritas acima) citações de escape. Se este conjunto for verdadeiro, as fugas de estilo C são interpretadas, ou seja, os caracteres de controle a, b, f, n, r, t, v e representações octais e hexadecimais como 040 e 0x2A. Qualquer outro caractere escapado é tratado como ele próprio, incluindo a barra invertida. Observe que Unicode escapa, como você xxxx nunca são interpretados. Isso pode ser especificado pelo argumento fileEncoding, por exemplo, se você sabe (corretamente), a codificação do filersquos isso quase sempre funcionará. No entanto, sabemos de uma exceção, arquivos UTF-8 com uma lista de materiais. Algumas pessoas afirmam que os arquivos UTF-8 nunca devem ter uma lista de materiais, mas alguns softwares (aparentemente incluindo o Excel: mac) os usam e muitos sistemas operacionais Unix não aceitam. Então, confrontado com um arquivo que arquivo relatórios como ele pode ser lido no Windows, mas em um Unix-alike pode precisar (Isso provavelmente funcionará sem especificar uma codificação em uma localidade UTF-8.) Conveniência funções read. csv e ler. Delim fornecer argumentos para read. table apropriado para CSV e arquivos delimitados por tabulação exportados de planilhas em locais de língua inglesa. As variações read. csv2 e read. delim2 são apropriadas para uso nos locais em que a vírgula é usada para o ponto decimal e (para read. csv2) para planilhas que usam pontos e vírgulas para separar campos. Se as opções para read. table forem especificadas incorretamente, a mensagem de erro geralmente será da forma. Isso pode fornecer informações suficientes para encontrar o problema, mas a função auxiliar count. fields pode ser útil para investigar mais. A eficiência pode ser importante ao ler grandes redes de dados. Isso ajudará a especificar comment. char quotquot. ColClasses como um dos tipos de vetores atômicos (lógico, inteiro, numérico, complexo, característico ou talvez cru) para cada coluna, e dar nrows. O número de linhas a serem lidas (e uma superestimação suave é melhor que não especificando isso). Veja os exemplos em seções posteriores. 2.2 Arquivos em formato de largura fixa Às vezes, os arquivos de dados não possuem delimitadores de campo, mas possuem campos em colunas pré-especificadas. Isso foi muito comum nos dias dos cartões perfurados, e às vezes é usado para salvar o espaço dos arquivos. A função read. fwf fornece uma maneira simples de ler esses arquivos, especificando um vetor de larguras de campo. A função lê o arquivo na memória como linhas inteiras, divide as seqüências de caracteres resultantes, grava um arquivo separado com separação de tabulação e, em seguida, chama read. table. Isso é adequado para arquivos pequenos, mas para qualquer coisa mais complicada recomendamos usar as facilidades de um idioma como perl para pré-processar o arquivo. A função read. fortran é uma função semelhante para arquivos de formato fixo, usando especificações de coluna de estilo Fortran. 2.3 Formato de intercâmbio de dados (DIF) Um formato antigo às vezes usado para dados semelhantes a planilha é DIF, ou formato de intercâmbio de dados. Function read. DIF fornece uma maneira simples de ler esses arquivos. Demora argumentos semelhantes ao read. table para atribuir tipos a cada uma das colunas. No Windows, os programas de planilha muitas vezes armazenam dados da planilha copiados para a área de transferência neste formato read. DIF (quotclipboardquot) podem lê-lo diretamente. É um pouco mais robusto do que read. table (quotclipboardquot) no gerenciamento de planilhas com células vazias. 2.4 Usando a varredura diretamente. Read. table e read. fwf usam a varredura para ler o arquivo e depois processam os resultados da varredura. Eles são muito convenientes, mas às vezes é melhor usar a varredura diretamente. A varredura de função tem muitos argumentos, a maioria dos quais já abordamos sob read. table. O argumento mais crucial é o quê. Que especifica uma lista de modos de variáveis a serem lidas a partir do arquivo. Se a lista for nomeada, os nomes são usados para os componentes da lista retornada. Os modos podem ser numéricos, característicos ou complexos, e geralmente são especificados por um exemplo, e. 0. quotquot ou 0i. Por exemplo, retorna uma lista com três componentes e descarta a quarta coluna no arquivo. Há uma função readLines que será mais conveniente se tudo o que você quer é ler linhas inteiras em R para processamento posterior. Um uso comum da varredura é ler em uma grande matriz. Suponha que o arquivo matrix. dat apenas contém os números para uma matriz de 200 x 2000. Então, podemos usar Em um teste, isso levou 1 segundo (sob o Linux, 3 segundos no Windows na mesma máquina), enquanto tomou 10 segundos (e mais memória) e demorou 7 segundos. A diferença é quase inteiramente devido à sobrecarga da leitura de 2000 colunas curtas separadas: se elas fossem do comprimento 2000, a varredura demorou 9 segundos, enquanto que read. table levou 18 se usado de forma eficiente (em particular, especificando colClasses) e 125 se usado de forma ingénua. Observe que os horários podem depender do tipo de leitura e dos dados. Considere ler um milhão de inteiros distintos: e um milhão de exemplos de um pequeno conjunto de códigos: Note que esses cronogramas dependem fortemente do sistema operacional (as leituras básicas no Windows levam pelo menos duas vezes o tempo que esses tempos de Linux) e no preciso Estado do coletor de lixo. 2.5 Dados de reformulação Às vezes, os dados da planilha estão em um formato compacto que fornece as covariáveis para cada assunto, seguido de todas as observações sobre esse assunto. As funções de modelagem Rrsquos precisam de observações em uma única coluna. Considere a seguinte amostra de dados a partir de medidas repetidas de MRI. Existem duas covariáveis e até quatro medidas em cada assunto. Os dados foram exportados do Excel como um arquivo mr. csv. Podemos usar a pilha para ajudar a manipular esses dados para dar uma única resposta. O desvio de função é na direção oposta e pode ser útil para exportar dados. Outra maneira de fazer isso é usar a função remodelar. Pela função de remodelação tem uma sintaxe mais complicada do que a pilha, mas pode ser usada para dados em que a forma lsquolongrsquo tenha mais do que uma coluna neste exemplo. Com direção em todo o mundo. Remodelar também pode realizar a transformação oposta. 2.6 Tabelas de contingência planas A exibição de tabelas de contingência de maior dimensão na forma de matriz geralmente é bastante inconveniente. Na análise de dados categóricos, essas informações são muitas vezes representadas na forma de matrizes bidimensionais enxertadas com linhas e colunas líderes, especificando a combinação de níveis de fator correspondentes às contagens de células. Essas linhas e colunas geralmente são ldquoraggedrdquo no sentido de que os rótulos são exibidos somente quando eles mudam, com a convenção óbvia de que as linhas são lidas de cima para baixo e as colunas são lidas da esquerda para a direita. Em R, tais tabelas de contingência ldquoflatrdquo podem ser criadas usando o ftable. Que cria objetos de classe quotftablequot com um método de impressão apropriado. Como um exemplo simples, considere o conjunto de dados padrão UC UC, que é uma tabela de contingência tridimensional resultante da classificação de candidatos para pós-graduação na UC Berkeley para os seis maiores departamentos de 1973 classificados por admissão e sexo. A representação impressa é claramente mais útil do que exibir os dados como uma matriz tridimensional. Há também uma função read. ftable para ler em tabelas de contingência planas de arquivos. Isso tem argumentos adicionais para lidar com variantes sobre como exatamente as informações sobre nomes e níveis de variáveis de linha e coluna são representadas. A página de ajuda para read. ftable tem alguns exemplos úteis. As tabelas planas podem ser convertidas em tabelas de contingência padrão em forma de matriz usando as. table. Note-se que as tabelas planas são caracterizadas pela sua exibição ldquoraggedrdquo de rótulos de linha (e talvez também de coluna). Se a grada completa dos níveis das variáveis de linha for dada, em vez disso, use read. table para ler nos dados e crie a tabela de contingência usando xtabs. 3 Importação de outros sistemas estatísticos Neste capítulo, consideramos o problema de ler um arquivo de dados binário escrito por outro sistema estatístico. Isso geralmente é melhor evitado, mas pode ser inevitável se o sistema de originação não estiver disponível. Em todos os casos, as instalações descritas foram escritas para arquivos de dados de versões específicas do outro sistema (muitas vezes no início dos anos 2000) e não foram necessariamente atualizadas para as versões mais recentes do outro sistema. 3.1 EpiInfo, Minitab, S-PLUS, SAS, SPSS, Stata, Systat O pacote recomendado estrangeiro fornece recursos de importação para arquivos produzidos por esses sistemas estatísticos e para exportação para a Stata. Em alguns casos, essas funções podem exigir substancialmente menos memória do que read. table. Write. foreign (Consulte Exportar para arquivos de texto) fornece um mecanismo de exportação com suporte atualmente para o SAS. SPSS e Stata. EpiInfo versões 5 e 6 dados armazenados em um formato de texto auto-descrevente de largura fixa. Read. epiinfo lerá esses arquivos. REC em um quadro de dados R. EpiData também produz dados neste formato. A função read. mtp importa um lsquoMinitab Portable Worksheetrsquo. Isso retorna os componentes da planilha como uma lista R. Função read. xport lê um arquivo no formato SAS Transport (XPORT) e retorna uma lista de quadros de dados. Se o SAS estiver disponível no seu sistema, a função read. ssd pode ser usada para criar e executar um script SAS que salva um conjunto de dados permanente do SAS (.ssd ou. sas7bdat) no formato de transporte. Em seguida, ele chama read. xport para ler o arquivo resultante. (Package Hmisc tem uma função similar sas. get), também com o SAS.) Para aqueles que não têm acesso ao SAS, mas executando no Windows, o SAS System Viewer (um download de custo zero) pode ser usado para abrir conjuntos de dados SAS e exportá-los para, por exemplo, Formato csv. Função read. S que pode ler objetos binários produzidos por S-PLUS 3.x, 4.x ou 2000 em (32 bits) Unix ou Windows (e pode lê-los em um sistema operacional diferente). Isso é capaz de ler muitos, mas não todos os objetos S: em particular, pode ler vetores, matrizes e quadros de dados e listas que os contenham. A função data. restore lê os despejos de dados S-PLUS (criado por data. dump) com as mesmas restrições (exceto que despejos da plataforma Alpha também podem ser lidos). Deveria ser possível ler os dados de s-PLUS 5.x e posterior escrito com data. dump (oldStyleT). Se você tiver acesso ao S-PLUS, geralmente é mais confiável para despejar o (s) objeto (s) em S-PLUS e fonte do arquivo de despejo em R. Para S-PLUS 5.x e posterior, talvez seja necessário usar dump (. OldStyleT). E para ler em objetos muito grandes, pode ser preferível usar o arquivo de despejo como um script em lote em vez de usar a função de origem. A função read. spss pode ler os arquivos criados pelos comandos lsquosaversquo e lsquoexportrsquo no SPSS. Ele retorna uma lista com um componente para cada variável no conjunto de dados salvo. As variáveis SPSS com rótulos de valor são opcionalmente convertidas em fatores R. O SPSS Data Entry é um aplicativo para criar formulários de entrada de dados. Por padrão, ele cria arquivos de dados com informações adicionais de formatação que read. spss não podem manipular, mas é possível exportar os dados em um formato SPSS comum. Alguns aplicativos de terceiros afirmam produzir dados lsquoin SPSS formatrsquo, mas com diferenças nos formatos: read. spss pode ou não ser capaz de lidar com estes. Os arquivos Stata. dta são um formato de arquivo binário. Os arquivos das versões 5 até 12 da Stata podem ser lidos e escritos por funções read. dta e write. dta. As variáveis Stata com rótulos de valor são opcionalmente convertidas em (e de) fatores R. Para as versões do Stata 13 e mais tarde, veja os pacotes da CRAN readstata13 e haven. Read. systat lê os arquivos de sistema SAVE que são arquivos de dados retangulares (mtype 1) escritos em máquinas Little-endian (como do Windows). Estes têm extensão. sys ou (mais recentemente).syd. 3.2 Octave Octave é um sistema de álgebra linear numérica (octave. org) e a função read. octave no pacote estrangeiro pode ler em arquivos no formato de dados de texto Octave criado com o comando Octave save - ascii. Com suporte para a maioria dos tipos comuns de variáveis, incluindo o padrão atômico (escalas reais e complexas, matrizes e matrizes N - d, cordas, intervalos e escalas e matrizes booleanas) e recursivas (estruturas, células e listas) . 4 bancos de dados relacionais 4.1 Por que usar um banco de dados Existem limitações nos tipos de dados que R lida bem. Uma vez que todos os dados que estão sendo manipulados por R são residentes na memória, e várias cópias dos dados podem ser criadas durante a execução de uma função, R não é adequado para conjuntos de dados extremamente grandes. Os objetos de dados com mais de um (poucos) cem megabytes de tamanho podem causar R para ficar sem memória, particularmente em um sistema operacional de 32 bits. R não suporta facilmente o acesso simultâneo aos dados. Ou seja, se mais de um usuário estiver acessando, e talvez atualizando, os mesmos dados, as mudanças feitas por um usuário não serão visíveis para os outros. R suporta persistência de dados, na medida em que você pode salvar um objeto de dados ou uma planilha inteira de uma sessão e restaurá-la na sessão subsequente, mas o formato dos dados armazenados é específico para R e não é facilmente manipulado por outros sistemas. Sistemas de gerenciamento de banco de dados (SGBDs) e, em particular, SGBDs relacionais (RDBMSs) são projetados para fazer todas essas coisas bem. Os seus pontos fortes são Fornecer acesso rápido a partes selecionadas de grandes bancos de dados. Maneiras poderosas para resumir e tabulações cruzadas de colunas em bancos de dados. Armazene dados de forma mais organizada do que o modelo de grade retangular de planilhas e quadros de dados R. Acesso simultâneo de vários clientes em execução em vários hosts ao mesmo tempo em que impõe restrições de segurança no acesso aos dados. Capacidade de atuar como servidor em uma ampla gama de clientes. O tipo de aplicações estatísticas para as quais o SGBD pode ser usado é extrair uma amostra de dados, distribuir dados para produzir uma tabela de contingência multidimensional e extrair grupo de dados por grupo de um banco de dados para análise separada. Cada vez mais, os sistemas operacionais estão fazendo uso de SGBD por esses motivos, por isso é hoje em dia provável que um já esteja instalado em seu sistema operacional (não Windows). Akonadi é usado pelo KDE4 para armazenar informações pessoais. Várias aplicações do MacOS, incluindo o Correio e o Catálogo de endereços, usam o SQLite. 4.2 Visão geral dos RDBMS Tradicionalmente, havia RDBMS comerciais grandes (e caros) (Informix Oracle Sybase IBMrsquos DB2 Microsoft SQL Server no Windows) e bancos de dados acadêmicos e de sistemas pequenos (como o MySQL 4. PostgreSQL, Microsoft Access, hellip), o antigo Marcado por uma ênfase muito maior nos recursos de segurança de dados. A linha está embaçada, com o MySQL e o PostgreSQL tendo cada vez mais recursos avançados, e as versões gratuitas do lsquoexpressrsquo estão disponíveis para os SGBDs comerciais. Existem outras fontes de dados comumente usadas, incluindo planilhas, bancos de dados não-relacionais e até mesmo arquivos de texto (possivelmente compactados). Open Database Connectivity (ODBC) é um padrão para usar todas essas fontes de dados. Ele se originou no Windows (veja msdn. microsoften-uslibraryms71025228vvs.8529.aspx), mas também é implementado no LinuxUnixmacOS. Todos os pacotes descritos posteriormente neste capítulo fornecem clientes aos bancos de dados de clientes. O banco de dados pode residir na mesma máquina ou (mais frequentemente) remotamente. Existe um padrão ISO (de fato, vários: o SQL 92 é ISO IEC 9075, também conhecido como ANSI X3.135-1992 e o SQL 99 está sendo utilizado) para uma linguagem de interface chamada SQL (Structured Query Language, às vezes pronunciada lsquosequelrsquo: Veja Bowman et al., 1996 e Kline e Kline 2001), que esses SGBD suportam em graus variados. 4.2.1 Consultas SQL As interfaces R mais abrangentes geram SQL por trás das cenas para operações comuns, mas o uso direto do SQL é necessário para operações complexas em todos. Convencionalmente, o SQL está escrito em maiúsculas, mas muitos usuários acharão mais conveniente usar minúsculas nas funções de interface R. Um banco de dados relacional armazena dados como um banco de dados de tabelas (ou relações) que são bastante semelhantes aos quadros de dados R, na medida em que são constituídos por colunas ou campos de um tipo (numérico, caracter, data, moeda, hellip) e linhas ou Registros contendo as observações para uma entidade. SQL lsquoqueriesrsquo são operações bastante gerais em um banco de dados relacional. The classical query is a SELECT statement of the type The first of these selects two columns from the R data frame USArrests that has been copied across to a database table, subsets on a third column and asks the results be sorted. The second performs a database join on two tables student and school and returns four columns. The third and fourth queries do some cross-tabulation and return counts or averages. (The five aggregation functions are COUNT() and SUM, MAX, MIN and AVG, each applied to a single column.) SELECT queries use FROM to select the table, WHERE to specify a condition for inclusion (or more than one condition separated by AND or OR), and ORDER BY to sort the result. Unlike data frames, rows in RDBMS tables are best thought of as unordered, and without an ORDER BY statement the ordering is indeterminate. You can sort (in lexicographical order) on more than one column by separating them by commas. Placing DESC after an ORDER BY puts the sort in descending order. SELECT DISTINCT queries will only return one copy of each distinct row in the selected table. The GROUP BY clause selects subgroups of the rows according to the criterion. If more than one column is specified (separated by commas) then multi-way cross-classifications can be summarized by one of the five aggregation functions. A HAVING clause allows the select to include or exclude groups depending on the aggregated value. If the SELECT statement contains an ORDER BY statement that produces a unique ordering, a LIMIT clause can be added to select (by number) a contiguous block of output rows. This can be useful to retrieve rows a block at a time. (It may not be reliable unless the ordering is unique, as the LIMIT clause can be used to optimize the query.) There are queries to create a table (CREATE TABLE, but usually one copies a data frame to the database in these interfaces), INSERT or DELETE or UPDATE data. A table is destroyed by a DROP TABLE lsquoqueryrsquo. Kline and Kline (2001) discuss the details of the implementation of SQL in Microsoft SQL Server 2000, Oracle, MySQL and PostgreSQL. 4.2.2 Data types Data can be stored in a database in various data types. The range of data types is DBMS-specific, but the SQL standard defines many types, including the following that are widely implemented (often not by the SQL name). Real number, with optional precision. Often called real or double or double precision. 32-bit integer. Often called int. fixed-length character string. Often called char. character varying( n ) variable-length character string. Often called varchar. Almost always has a limit of 255 chars. true or false. Sometimes called bool or bit. There are variants on time and timestamp. with timezone. Other types widely implemented are text and blob. for large blocks of text and binary data, respectively. The more comprehensive of the R interface packages hide the type conversion issues from the user. 4.3 R interface packages There are several packages available on CRAN to help R communicate with DBMSs. They provide different levels of abstraction. Some provide means to copy whole data frames to and from databases. All have functions to select data within the database via SQL queries, and to retrieve the result as a whole as a data frame or in pieces (usually as groups of rows). All except RODBC are tied to one DBMS, but there has been a proposal for a unified lsquofront-endrsquo package DBI (developer. r-project. orgdb ) in conjunction with a lsquoback-endrsquo, the most developed of which is RMySQL . Also on CRAN are the back-ends ROracle . RPostgreSQL and RSQLite (which works with the bundled DBMS SQLite. sqlite. org ) and RJDBC (which uses Java and can connect to any DBMS that has a JDBC driver). Package RMongo provides an R interface to a Java client for lsquoMongoDBrsquo (en. wikipedia. orgwikiMongoDB ) databases, which are queried using JavaScript rather than SQL. Package mongolite is another client using mongodb rsquos C driver. 4.3.1 Packages using DBI Package RMySQL on CRAN provides an interface to the MySQL database system (see mysql and Dubois, 2000) or its fork MariaDB (see mariadb. org ). The description here applies to versions 0.5-0 and later: earlier versions had a substantially different interface. The current version requires the DBI package, and this description will apply with minor changes to all the other back-ends to DBI . MySQL exists on UnixLinuxmacOS and Windows: there is a lsquoCommunity Editionrsquo released under GPL but commercial licenses are also available. MySQL was originally a lsquolight and leanrsquo database. (It preserves the case of names where the operating file system is case-sensitive, so not on Windows.) The call dbDriver(quotMySQLquot) returns a database connection manager object, and then a call to dbConnect opens a database connection which can subsequently be closed by a call to the generic function dbDisconnect. Use dbDriver(quotOraclequot). dbDriver(quotPostgreSQLquot) or dbDriver(quotSQLitequot) with those DBMSs and packages ROracle . RPostgreSQL or RSQLite respectively. SQL queries can be sent by either dbSendQuery or dbGetQuery. dbGetquery sends the query and retrieves the results as a data frame. dbSendQuery sends the query and returns an object of class inheriting from quotDBIResultquot which can be used to retrieve the results, and subsequently used in a call to dbClearResult to remove the result. Function fetch is used to retrieve some or all of the rows in the query result, as a list. The function dbHasCompleted indicates if all the rows have been fetched, and dbGetRowCount returns the number of rows in the result. These are convenient interfaces to readwritetestdelete tables in the database. dbReadTable and dbWriteTable copy to and from an R data frame, mapping the row names of the data frame to the field rownames in the MySQL table. 4.3.2 Package RODBC Package RODBC on CRAN provides an interface to database sources supporting an ODBC interface. This is very widely available, and allows the same R code to access different database systems. RODBC runs on UnixLinux, Windows and macOS, and almost all database systems provide support for ODBC. We have tested Microsoft SQL Server, Access, MySQL, PostgreSQL, Oracle and IBM DB2 on Windows and MySQL, MariaDB, Oracle, PostgreSQL and SQLite on Linux. ODBC is a client-server system, and we have happily connected to a DBMS running on a Unix server from a Windows client, and vice versa . On Windows ODBC support is part of the OS. On UnixLinux you will need an ODBC Driver Manager such as unixODBC (unixODBC. org ) or iOBDC (iODBC. org. this is pre-installed in macOS) and an installed driver for your database system. Windows provides drivers not just for DBMSs but also for Excel (.xls ) spreadsheets, DBase (.dbf ) files and even text files. (The named applications do not need to be installed. Which file formats are supported depends on the versions of the drivers.) There are versions for Excel and Access 20072010 (go to microsoften-usdownloaddefault. aspx. and search for lsquoOffice ODBCrsquo, which will lead to AccessDatabaseEngine. exe ), the lsquo2007 Office System Driverrsquo (the latter has a version for 64-bit Windows, and that will also read earlier versions). On macOS the Actual Technologies (actualtechproductaccess. php ) drivers provide ODBC interfaces to Access databases and to Excel spreadsheets (not including Excel 20072010). Many simultaneous connections are possible. A connection is opened by a call to odbcConnect or odbcDriverConnect (which on the Windows GUI allows a database to be selected via dialog boxes) which returns a handle used for subsequent access to the database. Printing a connection will provide some details of the ODBC connection, and calling odbcGetInfo will give details on the client and server. A connection is closed by a call to close or odbcClose. and also (with a warning) when not R object refers to it and at the end of an R session. Details of the tables on a connection can be found using sqlTables. Function sqlSave copies an R data frame to a table in the database, and sqlFetch copies a table in the database to an R data frame. An SQL query can be sent to the database by a call to sqlQuery. This returns the result in an R data frame. ( sqlCopy sends a query to the database and saves the result as a table in the database.) A finer level of control is attained by first calling odbcQuery and then sqlGetResults to fetch the results. The latter can be used within a loop to retrieve a limited number of rows at a time, as can function sqlFetchMore. Here is an example using PostgreSQL, for which the ODBC driver maps column and data frame names to lower case. We use a database testdb we created earlier, and had the DSN (data source name) set up in. odbc. ini under unixODBC. Exactly the same code worked using MyODBC to access a MySQL database under Linux or Windows (where MySQL also maps names to lowercase). Under Windows, DSN s are set up in the ODBC applet in the Control Panel (lsquoData Sources (ODBC)rsquo in the lsquoAdministrative Toolsrsquo section). As a simple example of using ODBC under Windows with a Excel spreadsheet, we can read from a spreadsheet by Notice that the specification of the table is different from the name returned by sqlTables. sqlFetch is able to map the differences. 5.1 Binary data formats Both of these are systems to store scientific data in array-oriented ways, including descriptions, labels, formats, units, hellip. HDF5 also allows groups of arrays, and the R interface maps lists to HDF5 groups, and can write numeric and character vectors and matrices. NetCDFrsquos version 4 format (confusingly, implemented in netCDF 4.1.1 and later, but not in 4.0.1) includes the use of various HDF5 formats. This is handled by package ncdf4 whereas RNetCDF handles version 3 files. The availability of software to support these formats is somewhat limited by platform, especially on Windows. 5.2 dBase files (DBF) dBase was a DOS program written by Ashton-Tate and later owned by Borland which has a binary flat-file format that became popular, with file extension. dbf. It has been adopted for the rsquoXbasersquo family of databases, covering dBase, Clipper, FoxPro and their Windows equivalents Visual dBase, Visual Objects and Visual FoxPro (see e-bachmann. dkdocsxbase. htm ). A dBase file contains a header and then a series of fields and so is most similar to an R data frame. The data itself is stored in text format, and can include character, logical and numeric fields, and other types in later versions (see for example digitalpreservation. govformatsfddfdd000325.shtml and clicketyclick. dkdatabasesxbaseformatindex. html ). Functions read. dbf and write. dbf provide ways to read and write basic DBF files on all R platforms. For Windows users odbcConnectDbase in package RODBC provides more comprehensive facilities to read DBF files via Microsoftrsquos dBase ODBC driver (and the Visual FoxPro driver can also be used via odbcDriverConnect ). 6 Image files A particular class of binary files are those representing images, and a not uncommon request is to read such a file into R as a matrix. There are many formats for image files (most with lots of variants), and it may be necessary to use external conversion software to first convert the image into one of the formats for which a package currently provides an R reader. A versatile example of such software is ImageMagick and its fork GraphicsMagick. These provide command-line programs convert and gm convert to convert images from one format to another: what formats they can input is determined when they are compiled, and the supported formats can be listed by e. g. convert - list format. Package pixmap has a function read. pnm to read lsquoportable anymaprsquo images in PBM (blackwhite), PGM (grey) and PPM (RGB colour) formats. These are also known as lsquonetpbmrsquo formats. Packages bmp . jpeg and png read the formats after which they are named. See also packages biOps and Momocs . and Bioconductor package EBImage . TIFF is more a meta-format, a wrapper within which a very large variety of image formats can be embedded. Packages rtiff and tiff can read some of the sub-formats (depending on the external libtiff software against which they are compiled). There some facilities for specialized sub-formats, for example in Bioconductor package beadarray . Raster files are common in the geographical sciences, and package rgdal provides an interface to GDAL which provides some facilities of its own to read raster files and links to many others. Which formats it supports is determined when GDAL is compiled: use gdalDrivers() to see what these are for the build you are using. It can be useful for uncommon formats such as JPEG 2000 (which is a different format from JPEG, and not currently supported in the macOS nor Windows binary versions of rgdal ). 7 Connections Connections are used in R in the sense of Chambers (1998) and Ripley (2001), a set of functions to replace the use of file names by a flexible interface to file-like objects. 7.1 Types of connections The most familiar type of connection will be a file, and file connections are created by function file. File connections can (if the OS will allow it for the particular file) be opened for reading or writing or appending, in text or binary mode. In fact, files can be opened for both reading and writing, and R keeps a separate file position for reading and writing. Note that by default a connection is not opened when it is created. The rule is that a function using a connection should open a connection (needed) if the connection is not already open, and close a connection after use if it opened it. In brief, leave the connection in the state you found it in. There are generic functions open and close with methods to explicitly open and close connections. Files compressed via the algorithm used by gzip can be used as connections created by the function gzfile. whereas files compressed by bzip2 can be used via bzfile. Unix programmers are used to dealing with special files stdin. stdout and stderr. These exist as terminal connections in R. They may be normal files, but they might also refer to input from and output to a GUI console. (Even with the standard Unix R interface, stdin refers to the lines submitted from readline rather than a file.) The three terminal connections are always open, and cannot be opened or closed. stdout and stderr are conventionally used for normal output and error messages respectively. They may normally go to the same place, but whereas normal output can be re-directed by a call to sink. error output is sent to stderr unless re-directed by sink, typequotmessagequot). Note carefully the language used here: the connections cannot be re-directed, but output can be sent to other connections. Text connections are another source of input. They allow R character vectors to be read as if the lines were being read from a text file. A text connection is created and opened by a call to textConnection. which copies the current contents of the character vector to an internal buffer at the time of creation. Text connections can also be used to capture R output to a character vector. textConnection can be asked to create a new character object or append to an existing one, in both cases in the userrsquos workspace. The connection is opened by the call to textConnection. and at all times the complete lines output to the connection are available in the R object. Closing the connection writes any remaining output to a final element of the character vector. Pipes are a special form of file that connects to another process, and pipe connections are created by the function pipe. Opening a pipe connection for writing (it makes no sense to append to a pipe) runs an OS command, and connects its standard input to whatever R then writes to that connection. Conversely, opening a pipe connection for input runs an OS command and makes its standard output available for R input from that connection. URL s of types lsquo rsquo, lsquo rsquo, lsquo ftp: rsquo and lsquo file: rsquo can be read from using the function url. For convenience, file will also accept these as the file specification and call url. Sockets can also be used as connections via function socketConnection on platforms which support Berkeley-like sockets (most Unix systems, Linux and Windows). Sockets can be written to or read from, and both client and server sockets can be used. 7.2 Output to connections We have described functions cat. write. write. table and sink as writing to a file, possibly appending to a file if argument append TRUE. and this is what they did prior to R version 1.2.0. The current behaviour is equivalent, but what actually happens is that when the file argument is a character string, a file connection is opened (for writing or appending) and closed again at the end of the function call. If we want to repeatedly write to the same file, it is more efficient to explicitly declare and open the connection, and pass the connection object to each call to an output function. This also makes it possible to write to pipes, which was implemented earlier in a limited way via the syntax file quotcmdquot (which can still be used). There is a function writeLines to write complete text lines to a connection. Some simple examples are 7.3 Input from connections The basic functions to read from connections are scan and readLines. These take a character string argument and open a file connection for the duration of the function call, but explicitly opening a file connection allows a file to be read sequentially in different formats. Other functions that call scan can also make use of connections, in particular read. table. Some simple examples are For convenience, if the file argument specifies a FTP, HTTP or HTTPS URL. the URL is opened for reading via url. Specifying files via lsquo file:foo. bar rsquo is also allowed. 7.3.1 Pushback C programmers may be familiar with the ungetc function to push back a character onto a text input stream. R connections have the same idea in a more powerful way, in that an (essentially) arbitrary number of lines of text can be pushed back onto a connection via a call to pushBack. Pushbacks operate as a stack, so a read request first uses each line from the most recently pushbacked text, then those from earlier pushbacks and finally reads from the connection itself. Once a pushbacked line is read completely, it is cleared. The number of pending lines pushed back can be found via a call to pushBackLength. A simple example will show the idea. Pushback is only available for connections opened for input in text mode. 7.4 Listing and manipulating connections A summary of all the connections currently opened by the user can be found by showConnections(). and a summary of all connections, including closed and terminal connections, by showConnections(all TRUE) The generic function seek can be used to read and (on some connections) reset the current position for reading or writing. Unfortunately it depends on OS facilities which may be unreliable (e. g. with text files under Windows). Function isSeekable reports if seek can change the position on the connection given by its argument. The function truncate can be used to truncate a file opened for writing at its current position. It works only for file connections, and is not implemented on all platforms. 7.5 Binary connections Functions readBin and writeBin read to and write from binary connections. A connection is opened in binary mode by appending quotbquot to the mode specification, that is using mode quotrbquot for reading, and mode quotwbquot or quotabquot (where appropriate) for writing. The functions have arguments In each case con is a connection which will be opened if necessary for the duration of the call, and if a character string is given it is assumed to specify a file name. It is slightly simpler to describe writing, so we will do that first. object should be an atomic vector object, that is a vector of mode numeric. integer. logical. personagem. complex or raw. without attributes. By default this is written to the file as a stream of bytes exactly as it is represented in memory. readBin reads a stream of bytes from the file and interprets them as a vector of mode given by what. This can be either an object of the appropriate mode (e. g. whatinteger() ) or a character string describing the mode (one of the five given in the previous paragraph or quotdoublequot or quotintquot ). Argument n specifies the maximum number of vector elements to read from the connection: if fewer are available a shorter vector will be returned. Argument signed allows 1-byte and 2-byte integers to be read as signed (the default) or unsigned integers. The remaining two arguments are used to write or read data for interchange with another program or another platform. By default binary data is transferred directly from memory to the connection or vice versa . This will not suffice if the data are to be transferred to a machine with a different architecture, but between almost all R platforms the only change needed is that of byte-order. Common PCs (lsquo ix86 rsquo-based and lsquo x8664 rsquo-based machines), Compaq Alpha and Vaxen are little-endian . whereas Sun Sparc, mc680x0 series, IBM R6000, SGI and most others are big-endian . (Network byte-order (as used by XDR, eXternal Data Representation) is big-endian.) To transfer to or from other programs we may need to do more, for example to read 16-bit integers or write single-precision real numbers. This can be done using the size argument, which (usually) allows sizes 1, 2, 4, 8 for integers and logicals, and sizes 4, 8 and perhaps 12 or 16 for reals. Transferring at different sizes can lose precision, and should not be attempted for vectors containing NA rsquos. Character strings are read and written in C format, that is as a string of bytes terminated by a zero byte. Functions readChar and writeChar provide greater flexibility. 8.1 Reading from sockets Base R comes with some facilities to communicate via BSD sockets on systems that support them (including the common Linux, Unix and Windows ports of R). One potential problem with using sockets is that these facilities are often blocked for security reasons or to force the use of Web caches, so these functions may be more useful on an intranet than externally. For new projects it is suggested that socket connections are used instead. The earlier low-level interface is given by functions make. socket. read. socket. write. socket and close. socket. 8.2 Using download. file Function download. file is provided to read a file from a Web resource via FTP or HTTP (including HTTPS) and write it to a file. Often this can be avoided, as functions such as read. table and scan can read directly from a URL, either by explicitly using url to open a connection, or implicitly using it by giving a URL as the file argument. 9 Reading Excel spreadsheets The most common R data importexport question seems to be lsquohow do I read an Excel spreadsheetrsquo. This chapter collects together advice and options given earlier. Note that most of the advice is for pre-Excel 2007 spreadsheets and not the later. xlsx format. The first piece of advice is to avoid doing so if possible If you have access to Excel, export the data you want from Excel in tab-delimited or comma-separated form, and use read. delim or read. csv to import it into R. (You may need to use read. delim2 or read. csv2 in a locale that uses comma as the decimal point.) Exporting a DIF file and reading it using read. DIF is another possibility. If you do not have Excel, many other programs are able to read such spreadsheets and export in a text format on both Windows and Unix, for example Gnumeric (gnome. orgprojectsgnumeric ) and OpenOffice (openoffice. org ). You can also cut-and-paste between the display of a spreadsheet in such a program and R: read. table will read from the R console or, under Windows, from the clipboard (via file quotclipboardquot or readClipboard ). The read. DIF function can also read from the clipboard. Note that an Excel. xls file is not just a spreadsheet: such files can contain many sheets, and the sheets can contain formulae, macros and so on. Not all readers can read other than the first sheet, and may be confused by other contents of the file. Windows users (of 32-bit R) can use odbcConnectExcel in package RODBC . This can select rows and columns from any of the sheets in an Excel spreadsheet file (at least from Excel 97ndash2003, depending on your ODBC drivers: by calling odbcConnect directly versions back to Excel 3.0 can be read). The version odbcConnectExcel2007 will read the Excel 2007 formats as well as earlier ones (provided the drivers are installed, including with 64-bit Windows R: see RODBC ). macOS users can also use RODBC if they have a suitable driver (e. g. that from Actual Technologies). Perl users have contributed a module OLE::SpreadSheet::ParseExcel and a program xls2csv. pl to convert Excel 95ndash2003 spreadsheets to CSV files. Package gdata provides a basic wrapper in its read. xls function. With suitable Perl modules installed this function can also read Excel 2007 spreadsheets. Packages dataframes2xls and WriteXLS each contain a function to write one or more data frames to an. xls file, using Python and Perl respectively. Packages xlsx can read and and manipulate Excel 2007 and later spreadsheets: it requires Java. Package XLConnect can read, write and manipulate both Excel 97ndash2003 and Excel 200710 spreadsheets, using Java. Package readxl can read both Excel 97ndash2003 and Excel 200710 spreadsheets, using an included C library. Appendix A References R. A. Becker, J. M. Chambers and A. R. Wilks (1988) The New S Language. A Programming Environment for Data Analysis and Graphics. Wadsworth amp BrooksCole. J. Bowman, S. Emberson and M. Darnovsky (1996) The Practical SQL Handbook. Using Structured Query Language. Addison-Wesley. J. M. Chambers (1998) Programming with Data. A Guide to the S Language. Springer-Verlag. P. Dubois (2000) MySQL. New Riders. M. Henning and S. Vinoski (1999) Advanced CORBA Programming with C. Addison-Wesley. K. Kline and D. Kline (2001) SQL in a Nutshell. OrsquoReilly. B. Momjian (2000) PostgreSQL: Introduction and Concepts. Addison-Wesley. Also available at momjian. usmainwritingspgsqlawpgsqlbook. T. M. Therneau and P. M. Grambsch (2000) Modeling Survival Data. Extending the Cox Model. Springer-Verlag. E. J. Yarger, G. Reese and T. King (1999) MySQL amp mSQL . OrsquoReilly. Function and variable index
No comments:
Post a Comment