0
votes

Dans R: Comment créer une colonne de telle sorte qu'il existe une valeur initiale, et chaque valeur suivante est précédente plus un entier défini

Je m'excuse s'il s'agit d'une question répétitive aux autres répertoriés ... J'ai regardé et j'ai regardé plusieurs idées mais je ne peux pas sembler trouver une réponse de travail.

J'ai une colonne "attendue" dans la liste TFAOS avec plusieurs colonnes.

EDIT: DataFrame est:
Patients <- C (1:17)
Attendu <- C (0) TFAOS <- Data.Frame (Patients, attendus)

attendu devrait être:




17/24
Valeur précédente + 17/24
Valeur précédente + 17/24
etc. pour 17 rangées

ou l'équivalent:




17/24 * 1
17/24 * 2
17/24 * 3
etc. pour 17 rangées

Quelqu'un peut-il aider avec une solution simple?

J'ai essayé:
TFAOS [1,2] = 17/24
TFAOS [2:17, 2] = TFAOS $ attendu [-1] + 17/24

et

Mutate (TFAOS, attendu = 17/24 + décalage (attendu, défaut = 0))

Ces deux donnent simplement la même valeur 17/24 pour chaque ligne.



Merci tellement à l'avance.


2 commentaires

Il est plus facile de vous aider si vous fournissez les données dans un format que les gens peuvent copier et coller dans R en tant que jeu de données. Aussi ce qui est 17/24 ici? Est-il censé être un caractère (texte) ou est-il censé être numérique?


Merci pour les commentaires, je posterai dans un format reproductible ci-dessous. 17/24 est une valeur numérique (0,7083333).


3 Réponses :


1
votes

Vous pouvez essayer muté (attendu = 1: n () * 17/4)


0 commentaires

1
votes

Pas totalement sûr que je réponds à votre question, mais ce code prendra une valeur initiale, une longueur de vecteur et une taille de pas et vous donnera un vecteur qui commence à la valeur initiale et augmente par la taille de l'étape (éventuellement un entier) dans chaque élément successif.

out_length <- 10 # length of the vector you want
increment <- 4 # amount to increment in each step
initial <- 3 # starting value
(0:(out_length - 1))*increment + initial # the desired vector
[1]  3  7 11 15 19 23 27 31 35 39


1 commentaires

Merci beaucoup! Cela fonctionne parfaitement sur un niveau fondamental



0
votes

Voici une autre façon que vous puissiez utiliser vos données:

# package load
library(tidyverse)

# data
patients <- c(1:17) 
Expected <- c(0) 
TFAOS <- data.frame(patients, Expected)

# constant to add
myconstant <- 17/24


# mutate
TFAOS <- TFAOS %>%
    mutate(Expected = Expected + (patients - 1) * myconstant)

print(TFAOS)


1 commentaires

Fonctionne parfaitement aussi bien! Comme en utilisant la mutate car cela peut être fait en une étape et plus transférable. je vous remercie beaucoup!