Ich habe eine Tabelle namens "Trends", die ungefähr so aussieht
Project Area Animal Trend
A Canada Bird 1.5
A USA Mammal -0.6
A Mexico Bird -2.5
B Mexico Bird 0.7
B Canada Reptile 2.5
B Canada Bird -0.3
Ich möchte eine Übersichtstabelle erstellen, die ungefähr so aussieht:
Animal Area ATrend BTrend
Bird Canada 1.5 -0.3
Bird Mexico -2.5 0.7
Mammal USA -0.6
Reptile Canada 2.5
Ich habe 4 verschiedene Projekte, über 20 verschiedene Gebiete und über 200 verschiedene Tiere, daher muss ich Code finden, der sich an alle anpassen kann, ohne jede Gruppierung anzugeben.
Ich habe versucht, mithilfe der Cast-Funktion eine Pivot-Tabelle zu erstellen, aber ich habe Probleme, mehr als eine Spalte (z. B. Tier und Fläche) hinzuzufügen. Was ich versucht habe war:
cast(Trends, Animal~Project)
Dies gab mir jedoch nur die Anzahl der Tiere, die in jedem Projekt erfasst wurden, und berücksichtigte offensichtlich nicht die verschiedenen Bereiche. Ich bin sehr neu in R und weiß nicht viel, daher würde ich mich über eine ausführliche Antwort für einen Neuling sehr freuen :)
Eine Option wäre pivot_wider
library(tidyr)
library(dplyr)
library(stringr)
Trends %>%
mutate(Project = str_c("Trend", Project)) %>%
pivot_wider(names_from = Project, values_from = Trend)
# A tibble: 4 x 4
# Area Animal TrendA TrendB
# <chr> <chr> <dbl> <dbl>
#1 Canada Bird 1.5 -0.3
#2 USA Mammal -0.6 NA
#3 Mexico Bird -2.5 0.7
#4 Canada Reptile NA 2.5
Trends <- structure(list(Project = c("A", "A", "A", "B", "B", "B"), Area = c("Canada",
"USA", "Mexico", "Mexico", "Canada", "Canada"), Animal = c("Bird",
"Mammal", "Bird", "Bird", "Reptile", "Bird"), Trend = c(1.5,
-0.6, -2.5, 0.7, 2.5, -0.3)), class = "data.frame", row.names = c(NA,
-6L))
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