Sie können dies mit den Bibliotheken dplyr
und reshape2
tun. Ich brauchte auch eine ID-Spalte von mutmaßlich row.names zu erstellen:
Erstellen Sie Ihre Daten:
df = data.frame(d1=c(0.1,0,0.3,0.2), d2=c(0.2,0.1,0.3,0.4), d3=c(0.2,0.1,0.3,0.4))
row.names(df) = c("pr1", "pr2", "pr3", "pr4")
Berechnung: was happenning ist zunächst fügen wir die id
Spalte, dann wir „factorize“, um die Datenrahmen, dann Ich ändere den Tag im Zeichen zu numerisch und bestelle durch Identifikation, um das gleiche Ergebnis wie dein zu erhalten.
library(dplyr); library(tibble); library(reshape2)
df %>% rownames_to_column("id") %>% melt %>% mutate(day=as.numeric(variable)) %>%
select(id, day, pc_cum=value) %>% arrange(id)
#### id day pc_cum
#### 1 pr1 1 0.1
#### 2 pr1 2 0.2
#### 3 pr1 3 0.2
#### 4 pr2 1 0.0
#### 5 pr2 2 0.1
Es Ihre Frage reproduzierbar hilft erlauben zu machen, verwendet dput (Kopf (df)), um eine kleine Probe Ihres df auszugeben, die andere verwenden können, um Ihnen mit Ihrem Problem zu helfen –