Como preencher um valor em uma linha em um quadro de dados R com base em valores em outras linhas

user17144

Considere um dataframe R conforme abaixo.

Month Parent Child Parent_amt  Child_amt
   1     p1       c1    30          10
   1     p1       c2    30          20
   1     p2       c1    40          15
   1     p2       c2    40          25
   2     p1       c1    60          10
   2     p1       c2    60          50
   2     p2       c1    20          15
   2     p2       c2    20           5
   3     p1       c1    25          (10+10)/(30+60)*25
   3     p1       c2    25          (20+50)/(30+60)*25

Dado parent_amt 25 para p1 nas duas últimas linhas, quero calcular o Child_amt para c1 como a proporção de 25 que é igual à proporção da soma de Child_amt para c1 com a soma de parent_amt para p1 em todas as linhas acima os últimos dois. Eu quero fazer algo semelhante para c2. Como eu faço isso? Não consigo pensar em nada na R. Alguém pode ajudar?

usuário127992

Não entendo muito bem a estrutura dos seus dados. Não tenho certeza se deve ser organizado dessa forma. Consegui produzir os resultados que você queria usando dplyr:

library(tibble)
library(dplyr)

df <- tibble::tribble(
   ~Month, ~Parent, ~Child, ~Parent_amt,  ~Child_amt,
   1, "p1", "c1", 30, 10,
   1, "p1", "c2", 30, 20,
   1, "p2", "c1", 40, 15,
   1, "p2", "c2", 40, 25,
   2, "p1", "c1", 60, 10,
   2, "p1", "c2", 60, 50,
   2, "p2", "c1", 20, 15,
   2, "p2", "c2", 20, 5,
)

new_df <- df %>%
  dplyr::bind_rows({
    df %>%
      dplyr::group_by(Parent, Child) %>%
      dplyr::summarise(
        Child_amt = sum(Child_amt) / sum(Parent_amt) 
      ) %>%
     dplyr::mutate(Month = 3, Parent_amt = 25, Child_amt = Child_amt * 25)
  })

new_df

Presumi que Parent_amt está predefinido para 25 e que estamos produzindo Child_amt a partir da combinação anterior de Parent_amt e Child_amt como você descreveu

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

Como filtrar linhas com base na comparação com valores em outras linhas, em um quadro de dados agrupados em R?

Como reorganizar colunas de um quadro de dados com base em valores em uma linha

R - Criação de um ID de sequência exclusivo para linhas em um quadro de dados com base em um valor em uma linha anterior

Cole valores em um quadro de dados com base em valores duplicados em outras colunas em R

Como reformatar um quadro de dados R com várias linhas em uma linha

Como reformatar um quadro de dados R com várias linhas em uma linha

Em R, como você classifica valores em um quadro de dados com base em intervalos em outro quadro de dados?

Calculando a média de uma coluna com base em valores agrupados em outras colunas em um quadro de dados

Crie uma nova coluna usando dplyr com base em valores de string em todas as outras colunas em um quadro de dados em R

Existe uma maneira de preencher os valores ausentes em um quadro de dados em um formato de lista como o último valor da lista na linha anterior?

Raspagem com rvest: como preencher números em branco em uma linha para transformar em um quadro de dados?

em R, como posso alterar o valor de uma string de caracteres com base em uma condição para cada linha de um quadro de dados

Como preencher valores dentro de uma nova coluna com base em valores de outras colunas em um dataframe no Pandas

Como remover certas linhas do quadro de dados com base em outras colunas em R?

Como comparar strings da primeira linha com todas as outras linhas em um quadro de dados e contar o número de incompatibilidades em R?

Substitua o valor da coluna em um quadro de dados com base em outras colunas

Como adicionar uma linha a um quadro de dados em R?

Como subdividir um quadro de dados com base em valores em outro quadro de dados

Filtrar quadro de dados com base na frequência de um valor em uma linha

Destacar linha em um quadro de dados com base em um valor de coluna?

Como usar um gatilho em SQL para atualizar uma linha, com base em duas outras linhas

Como recodificar um valor em um quadro de dados com base em duas colunas em um quadro de dados separado?

Como encontrar o valor médio das linhas de um quadro de dados com base nos valores de uma coluna em Julia?

Como atribuir um valor a uma coluna com base no valor em outra coluna no quadro de dados R ou tabela de dados

Pandas: Como remover linhas de um quadro de dados com base em uma lista?

Removendo linhas em um quadro de dados com base em vários critérios em R

Pandas: adiciona uma nova coluna em um quadro de dados com base em um valor em outro quadro de dados

Como combinar valores de um quadro de dados com valores em uma lista e, em seguida, anexar a lista em R?

Como duplicar linhas em uma matriz numpy com base em um valor em cada linha