Ich habe einen Datensatz in R wie folgt:-
a <- data.frame(name=c("AFG", "AFG", "AFG","AFG", "GER", "GER", "GER", "GER", "GFR", "GFR",
"GFR", "GFR"),
Typ = c("One", "Two", "Three", "Four", "One", "Two", "Three", "Four", "One",
"Two", "Three", "Four"),
Yr1 = c(10, 11, 12, 14, 15, 17, 18, 19, 88, 1, 39, 1),
Yr2 = c(1:12), Yr3 = c(8:19))
Ich möchte diese Daten ändern, damit die Spalten auf den Werten in Typ
Spalte basieren . Das heißt ich bekomme folgendes data.frame
.
b <- data.frame(name = c("AFG", "AFG", "AFG","GER", "GER", "GER","GFR", "GFR", "GFR"),
Yr = c("Yr1", "Yr2", "Yr3", "Yr1", "Yr2", "Yr3", "Yr1", "Yr2", "Yr3"),
One = c(10, 1, 8, 15, 5, 12, 88, 9, 16),
Two = c(11, 2, 9, 17, 6, 13, 1, 10, 17),
Three = c(12, 3, 10, 18, 7, 14, 39, 11, 18),
Four = c(14, 4, 11, 19, 8, 15, 1, 12, 19))
Danke im Voraus
Verwendung tidyr
:
library(tidyr)
a %>%
pivot_longer(cols = Yr1:Yr3, names_to = 'Yr') %>%
pivot_wider(names_from = Typ, values_from = value)
# name Yr One Two Three Four
# <chr> <chr> <dbl> <dbl> <dbl> <dbl>
#1 AFG Yr1 10 11 12 14
#2 AFG Yr2 1 2 3 4
#3 AFG Yr3 8 9 10 11
#4 GER Yr1 15 17 18 19
#5 GER Yr2 5 6 7 8
#6 GER Yr3 12 13 14 15
#7 GFR Yr1 88 1 39 1
#8 GFR Yr2 9 10 11 12
#9 GFR Yr3 16 17 18 19
Verwendung data.table
:
dcast(melt(setDT(a), measure.vars = c('Yr1', 'Yr2', 'Yr3')),
name+variable~Typ, value.var = 'value')
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen