Estou com uma base e preciso fazer uma nova coluna a partir de uma linha, mas não pode somar olhem:
Num_proposta
Num_parcelas_pagas
3323
1
3323
2
3323
3
3323
4
2224
1
2224
2
2224
3
2224
4
5421
1
5421
2
5421
3
5421
4
Notamos que cada cliente pagou quatro parcelas eu quero criar uma nova coluna, mas apenas contando o número de parcelas e não somando as linhas. Quero que fique assim:
Não sei se entendi a sua pergunta. O summarise() já cria a coluna resumida, então bastaria atribuir o resultado a um novo objeto; se você quer de fato criar uma coluna com buracos, veja o código que cria a base_limpa.
library(dplyr)
# Base para exemplo
base <- data.frame(
Num_proposta = c(3323, 3323, 3323, 3323, 2224, 2224, 2224, 2224, 5421, 5421, 5421, 5421),
Num_parcelas_pagas = c(1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4)
)
base_resumida <- base %>%
group_by(Num_proposta) %>%
summarise(Num_parcelas_pagas = n())
# Nova base
base_resumida
#> # A tibble: 3 × 2
#> Num_proposta Num_parcelas_pagas
#> <dbl> <int>
#> 1 2224 4
#> 2 3323 4
#> 3 5421 4
base_limpa <- base %>%
group_by(Num_proposta) %>%
mutate(Num_parcelas_pagas = ifelse(Num_parcelas_pagas == max(Num_parcelas_pagas), Num_parcelas_pagas, NA)) %>%
ungroup()
# Versão com NA
base_limpa
#> # A tibble: 12 × 2
#> Num_proposta Num_parcelas_pagas
#> <dbl> <dbl>
#> 1 3323 NA
#> 2 3323 NA
#> 3 3323 NA
#> 4 3323 4
#> 5 2224 NA
#> 6 2224 NA
#> 7 2224 NA
#> 8 2224 4
#> 9 5421 NA
#> 10 5421 NA
#> 11 5421 NA
#> 12 5421 4
Obrigado mais uma vez.
Acho que isso resolve porque eu terei que colocar essa nova coluna em um dataFrame com mais 40 colunas e por isso, acho que deixando com os buracos o join funciona melhor certo?
Depende muito do seu caso de uso. Acho que, idealmente, estamos falando de duas tabelas diferentes: uma na qual a chave é a parcela e outra na qual é a proposta. Se você está analisando os dados, talvez seja melhor trabalhar com os dados completos em um lugar e com os dados agregados em outro. Note que os buracos podem, por exemplo, atrapalhar um possível filtro da base completa.