2016-10-27 4 views
0

ich nicht über 10 Ansätze dazu:R erstellen Tabelle aus 3 Spalten

ich Daten in drei Spalten formatiert:

H7 200,3 2227649,5 
H13 200,3 1084585 
H15 200,3 873123,1 
Zdrowy 200,3 2245707 
Z26 202,7 1742185,9 
Zdrowy 202,7 2420348,5 
K4 203,5 10251587 
Z18 203,5 6904013 
H7 203,5 5765803 
H13A 203,5 4219047,5 
H13 203,5 1791847,1 
H15 203,5 1260959,3 
K3 203,5 9878843 
K5 203,5 3406241 
K35 203,5 4746493 
K37 203,5 6303874 
Z11 203,5 1415927,8 
Z16 203,5 6245137,5 
Z26 203,5 7330417,5 

Spalten 1 und 2 Werte enthalten, die nicht eindeutig sind. Was ich damit tun muss, ist, eine Matrix mit Spalte1 als Zeilennamen, Spalte2 als Spaltennamen und Spalte3 als die entsprechenden Werte in den Zellen zu erhalten. Wenn der Wert dupliziert ist (da die Spalten 1,2 einige nicht eindeutige Werte haben), sollte der Zellenwert ein Durchschnittswert sein.

Irgendwelche Hilfe dabei?

+0

Wenn Spalte 2 Spaltennamen und Spalte 3 Werte ist, aber Spalte 1 wird Zeilennamen, bedeutet dies, dass der Rest der Zeilen abgesehen von Zeile 1 Leerzeichen/NAs ist? – vagabond

+0

Ich habe Ihren Kommentar nicht ganz verstanden. NAs sind die Zellen, in denen Spalte 1 für alle Spalten2-Werte keine Spalte3 enthält. übergeben Sie die Daten aboe in: Bibliothek (tidyr) ee <- Spread (df, V2, V3, füllen = 0) und das ist, was ich am Ende will, weiß nur nicht, wie Sie mit doppelten Zeilen umgehen – redaktroll

Antwort

1

Es klingt, als ob Sie versuchen, Ihre Daten vom langen in das breite Format zu konvertieren. Sie können dies mit dem Paket reshape2 tun. Hier ist ein Mini-Beispiel:

# Create dummy data 
df <- data.frame(col1=sample(c('a','b','c'), 10, replace=T), col2=sample(1:3, 10, replace=T), col3=rnorm(10)) 
df 
    col1 col2  col3 
1  b 2 0.1514541 
2  c 3 -0.2566596 
3  a 3 -0.8939474 
4  a 1 -0.2174930 
5  a 1 -0.1739861 
6  b 1 -0.4525370 
7  b 2 -0.5592760 
8  b 3 0.5206133 
9  a 2 -1.9239337 
10 c 2 -0.1581582 

# Load the library 
library(reshape2) 

# Cast the library into wide format 
df.long <- dcast(df, col1~col2, fun.aggregate=mean) 
df.long 
col1   1   2 
1 a -0.1957395 -1.9239337 
2 b -0.4525370 -0.2039110 
3 c  NaN -0.1581582 
      3 
1 -0.8939474 
2 0.5206133 
3 -0.2566596 

Wenn kein Wert für einige der Kombinationen von Faktoren in den Spalten vorhanden 1 und 2 wird dies eine NaN einfügen.

+0

genau das, was ich brauchte, vielen Dank! – redaktroll

Verwandte Themen