2009-12-30 5 views
0

J'ai un ensemble de données qui ressemble à ceci:manipulation de données avec R: Restructuration des données

a <- data.frame(rep(1,5),1:5,1:5) 
b <- data.frame(rep(2,5),1:5,1:5) 
colnames(a) <- c(1,2,3) 
colnames(b) <- c(1,2,3) 
c <- rbind(a,b) 

    1 2 3 
1 1 1 1 
2 1 2 2 
3 1 3 3 
4 1 4 4 
5 1 5 5 
6 2 1 1 
7 2 2 2 
8 2 3 3 
9 2 4 4 
10 2 5 5 

mais je veux qu'il soit restructuré à ceci:

2_1 2_2 3_1 3_2 
    1 1 1 1 1 
    2 2 2 2 2 
    3 3 3 3 4 
    4 4 4 4 4 
    5 5 5 5 5 

Répondre

4
a <- data.frame(rep(1,5),1:5,1:5) 
b <- data.frame(rep(2,5),1:5,1:5) 
colnames(b) <- colnames(a) <- paste("a", c(1,2,3), sep='') 
d <- rbind(a,b) 
library(reshape) 
recast(d, a2 ~ a1, measure.var="a3") 

J'ai changé votre exemple légèrement, car il avait des nombres comme noms de variables. Ceci n'est pas recommandé car il permet le non-sens suivant:

"1" <- 3 
print(1) 
[1] 1 
print("1") 
[1] "1" 
print(`1`) 
[1] 3 

Dois-je en dire plus?

+0

Pourquoi n'est-il pas recommandé d'avoir des nombres comme noms de variables? –

+1

Eduardo a raison. R ne vous permet pas de stocker une variable commençant par un nombre. Essayez ceci: 1b <- 1; b1 <- 1. Si vous avez déjà joint votre ensemble de données, vous pourriez avoir des problèmes. – Shane

+0

Merci pour l'explication! Très appréciée –

Questions connexes