2016-05-27 26 views
1

Ich habe eine Tabelle in R mit n Werte. Ich möchte eine Spalte B, die die Werte einer anderen Spalte A, hat zu schaffen, sondern bewegte sich „up“ 1 Zeile:R: create Spalte mit den Werten einer anderen Spalte -1

Beispiel:

A B 
_ _ 
1 2 
2 3 
3 n 
n n 

Ich weiß, dass das erste Element der A wird in Spalte B gelöscht werden und auch würde ich mag den Wert duplizieren n und verschieben sie sie in der letzten „leere“ Stelle von B (was sonst 0 sein würde, weil ich bin alle Werte "oben")

+1

Mit 'dplyr',' df%>% mutieren (B = Blei (df $ A)) '. Fügen Sie '%>% tidyr :: fill (B)' hinzu, wenn Sie möchten, obwohl 'NA' nützlicher erscheint als' "n" '. – alistaire

+1

@Max Dies ist bereits hier beantwortet http://stackoverflow.com/questions/25995257/r-shift-values-in-single-column-of-dataframe-up – Learner

Antwort

2
dat <- data.frame(A = c(1, 2, 3, 4)) 
dat$B <- dat$A[c(2:length(dat$A), length(dat$A))] 

Sollte funktionieren.

+0

Danke, funktioniert perfekt! – Max

+1

@lmo danke, ich habe es falsch gelesen. Angenommen, er wollte, dass der erste Wert bis zum Ende springt. Aktualisierte Antwort – Japhir

1

Sie könnten einfach die Werte mit

table$B[1:n-1] <- table$A[2:n] 
2
df1$B <- with(df1,c(tail(A,-1),tail(A,1))) 

Beispieldaten ersetzen:

df1 <- data.frame(A = c(1, 2, 3, 0)) 

Ausgang:

#> df1 
# A B 
#1 1 2 
#2 2 3 
#3 3 0 
#4 0 0 
Verwandte Themen