Déplacement d'une colonne vers le bas par un
Dire que j'ai un data.frame
qui ressemble à ce
df <- data.frame(AAA = rep(c(NA,sample(1:10, 1)),5),
BBB = rep(c(NA,sample(1:10, 1)),5),
CCC = rep(c(sample(1:10, 1),NA),5))
> df
AAA BBB CCC
1 NA NA 10
2 3 7 NA
3 NA NA 10
4 3 7 NA
5 NA NA 10
6 3 7 NA
7 NA NA 10
8 3 7 NA
9 NA NA 10
10 3 7 NA
Je veux décalage de colonne CCC vers le bas par un, de sorte que tous les numéros d'aligner sur une seule ligne, puis supprime les lignes qui ne contiennent pas de données (souvent toutes les autres lignes - MAIS PAS TOUJOURS - le motif peut varier à travers le data.frame
.
Si vous souhaitez reproduire ce résultat exact, vous devez utiliser
vous pouvez également déplacer une colonne vers le haut? Par exemple, comment pourrais-je déplacer le BBB colonne d'un niveau? Je n'ai pas été en mesure de modifier votre code précédent.
Vous pouvez déplacer à l'aide de
set.seed
vous pouvez également déplacer une colonne vers le haut? Par exemple, comment pourrais-je déplacer le BBB colonne d'un niveau? Je n'ai pas été en mesure de modifier votre code précédent.
Vous pouvez déplacer à l'aide de
transform(df, BBB = c(BBB[-1], NA))
. Avec dplyr
vous pouvez déplacer vers le haut/vers le bas avec lag
et lead
. Par exemple, library(dplyr); transform(df, BBB = lead(BBB))
OriginalL'auteur B. Davis | 2014-09-05
Vous devez vous connecter pour publier un commentaire.
Utiliser une combinaison de la très efficace
transform
etna.omit
fonctionsOriginalL'auteur David Arenburg
À l'aide de
dplyr
Ou à l'aide de
data.table
OriginalL'auteur akrun
Vous pouvez déplacer tout en un avec:
Pour supprimer des lignes avec seulement
NA
valeurs, ne:OriginalL'auteur Will Beason