2017-11-26 2 views
0

Ich habe einen Datenrahmen, wobei die erste Spalte den Namen jedes Staates ist. Und die letzte Spalte ist eine kategorische Variable. Ich möchte alle anderen Spalten außer diesen beiden skalieren. Und später möchte ich die letzte Spalte wieder zum Datenrahmen hinzufügen. Hier ist, was ich DIDUmbenennen einer hinzugefügten Variablen in einem Datenrahmen

data_new <- cbind(scale(data[,2:11], FALSE, apply(data[,2:11], 2, sd)), data[ ,c(12)]) 

Wenn ich die Datenrahmen zurück, die letzte Spalte Name verschwunden ist (wenn Sie die Spalte mit 4,4,4,1,3,2 sehen ....).

  violcr propcr ympct medinc ymunemp subsabuse  gini ineqratio school bachdeg 
[1,] 3.3178283 5.520019 14.91484 4.926599 5.926865 9.942629 24.34441 2.297458 7.420143 5.293805 4 
[2,] 4.9355995 4.794578 19.33284 8.132947 3.660475 13.367018 21.36148 1.773477 6.497878 6.542936 4 
[3,] 3.1043508 5.554588 15.76717 5.653173 4.779743 12.653053 23.92486 2.754263 5.925069 6.270668 4 
[4,] 3.7269288 5.798660 15.19722 4.672179 4.334980 10.167396 24.11929 2.767698 8.379425 4.943795 4 
[5,] 3.0748521 4.240596 16.55721 6.962185 5.279658 11.515997 25.01979 3.882839 5.351711 7.171495 1 
[6,] 2.3994870 4.395204 16.06272 6.731090 3.732236 13.591785 23.45414 2.700521 5.250990 8.690245 3 
[7,] 1.8390115 3.336054 15.09004 7.914420 5.419199 11.820093 25.60819 5.723492 7.062003 7.554442 2 

Ich habe versucht, diesen Befehl mit dem 12. Spalten-

colnames(data_new)[,12] <- "guns" 

Allerdings habe ich einen Fehler zu nennen. Wenn ich versuche, alle Spalten einschließlich der letzten umzubenennen, dann funktioniert es auch nicht. Könnte jemand helfen, wie man das beheben kann?

+1

Sie brauchen 'Daten [12]' dh 'cbind (Maßstab (Daten [, 2: 11 ], FALSE, apply (data [, 2: 11], 2, sd)), data [12]) 'weil' data [, 12] 'es in einen' vector' umwandeln, während 'data [12]' noch steht ein data.frame – akrun

+1

Großartig ... das hat funktioniert. Vielen Dank! –

+1

Was ist der Fehler, den Sie bekommen, wenn Sie den 'colnames' Befehl versuchen? Sie sollten 'cbind (..., guns = data [, 12])' verwenden können, um einen Namen zuzuweisen. – MrGumble

Antwort

0

versuchen

colnames(data_new) <- c(colnames(data_new)[1:11], "guns") 

, was Sie tun, ist einen neuen Vektor erstellen und dann zuweisen. Ich denke, der col-Selektor data_new[,n] bekommt Sie eine Teilmenge der Daten (dh eine Spalte n), aber es ist nicht hilfreich mit Überschriften

Verwandte Themen