0
votes

Comment puis-je faire une formule multinragère?

J'essaie d'utiliser une formule Multirow pour avoir une nouvelle colonne calculée, mais ne peut pas le comprendre tout à fait.

Supposons que mes données sont ceci: p>

x     y

1     2

1     2

1     6

1     7

2     4

2     5

2     9


4 commentaires

La première chose à faire est de spécifier ce que vous voulez pour votre première valeur.


Et fournir une sortie attendue pour vos données d'échantillonnage.


@Divibisan: Je ne pense pas que c'était un duplicata, bien que je ne excluais pas la possibilité que d'autres questions impliquées à l'aide d'une variable de décalage pour construire une deuxième variable puissent exister.


@ 42- Je suis totalement incertain sur ce qu'ils essaient de faire, mais si c'est ce que fait toutes les 3 de ces réponses, alors j'avais tort sur la duplicata


3 Réponses :


2
votes

Essayez ceci:

# load package
library(dplyr)
# reproduce your data
df <- data.frame(x = rep(1:2, c(4, 3)),
                 y = c(2, 2, 6, 7, 4, 5, 9))
df %>%
  mutate(z = case_when(x == lag(x) ~ y - lag(x),
                       TRUE ~ 0))


0 commentaires

1
votes

ou dans la base r Ceci peut être fait avec ifelse xxx

données xxx


0 commentaires

0
votes

Fonctions arithmétiques booléennes avec la tête et la queue utilisée pour construire les variables à la traîne. (première mise en œuvre a utilisé une mauvaise logique):

dat$new <- with(dat, c(0,  # starting value for no prior x
                   tail(y,-1)-head(x, -1)) * #The values if x[-1]==x
              # then construct the x[-1] == x logical vector
                     ( c(0,                        # starting
                   tail(x,-1)== head(x,-1)))) # prior x == current x 

> dat
  x y new
1 1 2   0
2 1 2   1
3 1 6   5
4 1 7   6
5 2 4   0
6 2 5   3
7 2 9   7


0 commentaires