Criando Data Frames
Parte da seção Lógica e Fluxo do Journey de R da Coddy. Lição 42 de 64.
Um data frame é a tabela do R: cada coluna é um vetor com seu próprio tipo, e todas as colunas têm o mesmo comprimento, um valor por linha. data.frame() cria um a partir de vetores nomeados:
people <- data.frame(
name = c("ada", "bo", "cy"),
age = c(36, 22, 41),
city = c("london", "paris", "rome")
)
print(people)Saída:
name age city
1 ada 36 london
2 bo 22 paris
3 cy 41 romenrow() e ncol() fornecem o tamanho, e names() lista as colunas. Diferentemente de uma matriz, as colunas podem conter tipos diferentes: neste caso, texto e números.
people <- data.frame(
name = c("ada", "bo", "cy"),
age = c(36, 22, 41),
city = c("london", "paris", "rome")
)
print(nrow(people))
print(ncol(people))
print(names(people))Saída:
[1] 3
[1] 3
[1] "name" "age" "city"str() mostra o tipo e os primeiros valores de cada coluna, o que é uma maneira rápida de verificar o que um data frame contém:
people <- data.frame(
name = c("ada", "bo", "cy"),
age = c(36, 22, 41),
city = c("london", "paris", "rome")
)
str(people)Saída:
'data.frame': 3 obs. of 3 variables:
$ name: chr "ada" "bo" "cy"
$ age : num 36 22 41
$ city: chr "london" "paris" "rome"Os dados geralmente chegam como texto, com uma linha por registro. read.csv(text = lines) transforma essas linhas em um data frame, usando a primeira linha como os nomes das colunas e convertendo os números automaticamente:
lines <- c("item,qty", "tea,2", "jam,5")
orders <- read.csv(text = lines)
print(orders)
print(sum(orders$qty))Saída:
item qty
1 tea 2
2 jam 5
[1] 7Desafio
FácilComplete table_info(names, ages). Construa um quadro de dados com as colunas name e age a partir dos dois vetores. Retorne três linhas: Rows: com o número de linhas, Columns: com os nomes das colunas unidos por , e Oldest: com o nome na linha que tem a maior idade (o primeiro quando houver empate nas idades).
O código fornecido lê os nomes e as idades como duas linhas separadas por vírgulas e imprime cada linha retornada.
Experimente você mesmo
table_info <- function(names, ages) {
# Escreva seu código aqui
character(0)
}
# Código de entrada/saída fornecido: mantenha-o como está
input <- suppressWarnings(readLines(file("stdin")))
cat(table_info(strsplit(input[1], ",")[[1]], as.numeric(strsplit(input[2], ",")[[1]])), sep = "\n")
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Lógica e Fluxo
1Strings em Profundidade
Substrings com substr()Formatação com sprintf()Dividindo e UnindoPesquisando StringsSubstituindo TextoRecapitulação - Criador de Nome de Usuário4Matrizes
Criando MatrizesIndexando MatrizesResumos de Linhas e ColunasAritmética de MatrizesRecapitulação - Tabela de Assentos10Fluxo de Controle Avançado
A Função switch()ifelse() Vetorizadorepeat e breakFunções RecursivasRevisão — Classificador de Notas2Consultas de Chave-Valor
Consultas em Vetores NomeadosVerificando ChavesAdicionando e Removendo ChavesPercorrendo NomesRecapitulação - Mesa de Ações5Projeto - Boletim de Notas
Adicionando AlunosRegistrando Notas3Conjuntos e Contagem
Valores ÚnicosOperações com ConjuntosTestes de PertinênciaContagem com table()Recapitulação - Convidados do Evento6Funções como Valores
Funções AnônimasPassando FunçõesRetornando FunçõesClosures com EstadoRecapitulação - Regras de Desconto9Data Frames
Criando Data FramesColunas e LinhasFiltrando LinhasAdicionando e OrdenandoRecapitulação - Relatório de Vendas12Projeto - Rastreador de Despesas
Registro de DespesasGastos TotaisPratique por conta própria: Compilador de R online