2 votes

Ajoutez 1 à la valeur à mesure que le rang augmente

Je travaille avec des données classées regroupées qui ont une latitude et une longitude que je voudrais ajouter 0,00075 au champ de latitude chaque fois que le rang augmente de 1.

Voici l'un des 5000 groupes et on ne sait pas quel sera le rang maximal, donc j'ai besoin que cela se fasse au sein d'un group_by en utilisant de préférence dplyr.

Je sais que je peux utiliser un

group_by(loc_id) %>% mutate(y = if_else(rank > 1, as.character(Y + 0.00075), as.character(Y))

mais cela ne fonctionne qu'une seule fois.

Voici du code r pour construire un dataframe plein de données

id <- c(1,2,3,4,5)
loc_id <- c(77,77,77,77,77)
x <- c(-74.001981, -74.001981, -74.001981, -74.001981, -74.001981)
y <- c(40.736038, 40.736038, 40.736038, 40.736038, 40.736038)
views <- c(55,45,66,22,99)
rank <- c(3,4,2,5,1)
data <- data.frame(id, loc_id, x, y, views, rank)

2voto

tmfmnk Points 8978

Transformer mon commentaire en un post. En utilisant dplyr, vous pouvez faire :

data %>% 
 group_by(loc_id) %>% 
 mutate(y = y + ((rank - 1) * 0.00075))

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X