R - Erstellen Sie einen Datenrahmen aus einer Liste von Daten mit unterschiedlicher Anzahl von Spalten

loloj0

Ich habe einen Datensatz mit Datum, Name des Standorts und Werten in derselben Liste. Mein Ziel ist es, einen Datenrahmen in einer Schleife zu generieren, in der Spalten den Wert für jedes Datum und den Namen des Speicherorts die Zeilen anzeigen.

Die Daten stimmen jedoch nicht immer überein. Fehlende Werte können NA sein.

Außerdem brauche ich nur den zweiten Wert (Wert2).

Was ist der einfachste Weg, dies zu tun?

Beispieldaten:

data <- structure(list(date = structure(c(7L, 4L, 6L, 15L, 3L, 1L, 13L, 2L, 16L, 11L, 7L, 14L, 8L, 4L, 6L, 15L, 3L, 9L, 10L, 1L, 12L, 5L, 7L, 14L, 8L, 4L, 6L, 15L, 9L, 10L, 1L, 13L, 2L, 16L, 11L), .Label = c("01.10.2013", "01.10.2015", "08.10.2010", "13.09.2007", "16.09.2003", "17.09.2008", "20.09.2004", "21.09.2006", "23.09.2011", "26.09.2012", "26.09.2017", "27.08.2001", "29.09.2014", "30.08.2005", "30.09.2009", "30.09.2016" ), class = "factor"), name = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), .Label = c("P1", "P2", "P3"), class = "factor"), value = c(14L, 453L, 345L, 765L, 87L, 45L, 4L, 12L, 2L, 6L, 84L, 11L, 87L, 45L, 4L, 12L, 12L, 14L, 453L, 345L, 51L, 50L, 123L, 34L, 75L, 74L, 42L, 2L, 123L, 42L, 12L, 6L, 9L, 4L, 1L), value2 = c(0.046, 0.003, 0.022, 0.016, -0.035, 0.032, 0.013, -0.001, 0.018, -0.006, 0.017, -0.001, 0.02, 0, 0.009, 0.191, 0.169, 0.191, 0.286, 0.324, 0.426, 0.35, 0.212, 0.107, 0.081, 0.034, 0.084, 0.092, 0.054, 0.019, 0.022, 0.017, 0.018, 0.002, 0.017)), .Names = c("date", "name", "value", "value2" ), class = "data.frame", row.names = c(NA, -35L))

Bisher habe ich verschiedene Dinge ausprobiert, die ich im Internet gefunden habe, aber keine hat für mich funktioniert.

Zuerst habe ich einen Datenrahmen mit allen eindeutigen Daten in der Liste generiert

data$date <- as.Date(data$date, format="%d.%m.%Y")
uniquedates <- as.data.frame(unique(sort(data$date)))
colnames(uniquedates) <- c("date")

Als nächstes teile ich die Daten nach Namen auf.

split <- split(data, data$name)

Schließlich habe ich versucht, das Datum und den Wert2 aus jedem Split abzurufen und sie in einer Schleife zusammenzuführen.

for (i in seq_along(split)) {
  point <- split[[i]][,c("date","value2")]
  name <- as.character(unique(split[[i]]$name))
  colnames(merge)[colnames(merge) == "value2"] <- name
  merge <- merge(x=uniquedates, y = point, by='date', all.x = TRUE)
}

Dies ist das Ergebnis, das ich suche:

date        P1      P2      P3
27.08.2001  NA      0.426   NA
16.09.2003  NA      NA      0.35
20.09.2004  0.046   0.017   0.212
30.08.2005  NA     -0.001   0.107
21.09.2006  NA      0.02    0.081
13.09.2007  0.003   0       0.034
17.09.2008  0.022   0.009   0.084
30.09.2009  0.016   0.191   0.092
08.10.2010  -0.035  0.169   NA
23.09.2011  NA      0.191   0.054
26.09.2012  NA      0.286   0.019
01.10.2013  0.032   0.324   0.022
29.09.2014  0.013   NA      0.017
01.10.2015  -0.001  NA      0.018
30.09.2016  0.018   NA      0.002
26.09.2017  -0.006  NA      0.017
Sada93

Schauen Sie sich das reshape2-Paket und die dcastand- meltMethoden an.

library(dplyr)
library(reshape2)

data2 = data%>%
  mutate(date = as.Date(date,format = '%d.%m.%Y'))%>% #Convert date to a date time object
  select(-value)%>% #Remove value because we dont need it
  dcast(date~name,value.var = "value2") # Pivot the dataframe

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.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

Erstellen Sie einen Datenrahmen aus einer Liste mit mehreren Spalten

Erstellen Sie einen Datenrahmen aus einer Liste von Listen mit Datenrahmen

Wie konvertiert man einen Datenrahmen aus einer Liste mit einer unterschiedlichen Anzahl von Zeilen in R?

Erstellen eines Barplots mit mehreren Spalten aus einer großen Anzahl von Daten (in R)

Erstellen Sie einen Datenrahmen aus einer Liste von Wörterbuchwerten

Erstellen Sie einen Datenrahmen aus einer Liste von Datensätzen

Erstellen Sie einen Datenrahmen aus einer Liste von Namen

Erstellen Sie einen Datenrahmen aus einer Liste von Listen

Erstellen Sie einen Pandas-Datenrahmen aus einer Reihe mit einer Liste von Wörterbüchern

Erstellen Sie Boxplots aus separaten Datenrahmen mit unterschiedlicher Anzahl von Zeilen

Erstellen Sie einen Vektor mit Datenrahmennamen aus einer Liste von Datenrahmen

Verwandeln Sie einen Datenrahmen in eine benannte Liste von Datenrahmen mit Namen aus einer Spalte in R.

Erstellen Sie eine Liste von Datenrahmen basierend auf Spalten von Datenrahmen in einer anderen Liste R

Erstellen Sie einen Datenrahmen aus einer Liste von Listen in R.

So finden Sie Phrasen im Wörterbuch aus einer Liste von Phrasen und erstellen einen Datenrahmen mit gefundener Phrase und Anzahl. Duplikate sollten gezählt werden

Teilen Sie einen Datensatz in eine Liste von Datenrahmen mit der gleichen Anzahl von Spalten auf

Erstellen einer Funktion zum Entfernen von Spalten mit unterschiedlichen Namen aus einer Liste von Datenrahmen

Verketten Sie zwei Datenrahmen (dask) mit der gleichen Anzahl von Partitionen, aber unterschiedlicher Anzahl von Spalten

Wählen Sie aus, welche Spalten in einer Schleife von Dateien mit unterschiedlicher Anzahl von Spalten zusammengefasst werden sollen

Verbinden Sie 2 Spalten mit unterschiedlicher Anzahl von Zeilen in R

Verwenden von R zum Extrahieren von Daten aus einem Datenrahmen und Speichern von Daten in einer unbekannten Anzahl neuer Spalten

Kombinieren von Datenrahmen mit unterschiedlicher Anzahl von Spalten und Zeilen

Kombinieren Sie 2 Datenrahmen mit unterschiedlicher Anzahl von Spalten und aggregieren Sie sie mit der Summe

Iterieren Sie einen Datenrahmen mit Listen von Spaltennummern unterschiedlicher Länge mit einer Funktion in R.

Wie erstelle ich mit Pandas einen Datenrahmen mit unterschiedlicher Anzahl von Ebenen in Multiindex-Spalten?

So erstellen Sie einen Pandas-Datenrahmen mit verschachtelten Spalten aus einer Liste verschachtelter Dikte

Erstellen Sie einen Datenrahmen aus einem Datenrahmen in einer Liste mit dem Maximalwert in einer Spalte in R.

Erstellen Sie eine Liste von Datenrahmen mit AICc-Werten aus einer verschachtelten Liste von Modellen

Erstellen Sie einen einzelnen Pandas-Datenrahmen aus einer Liste von Datenrahmen