Próbuję użyć funkcji daply
w pakiecie plyr
, ale nie mogę jej poprawnie wyświetlić. Mimo że zmienna składająca się na macierz jest numeryczna, elementy macierzy są listami, a nie samą zmienną. Oto mały podzbiór danych, na przykład imię:Konwertowanie ramki danych na macierz za pomocą plyr dully
Month Vehicle Samples
1 Oct-10 31057 256
2 Oct-10 31059 316
3 Oct-10 31060 348
4 Nov-10 31057 267
5 Nov-10 31059 293
6 Nov-10 31060 250
7 Dec-10 31057 159
8 Dec-10 31059 268
9 Dec-10 31060 206
I chciałbym, aby móc wizualizować dane w formacie matrycy, która będzie wyglądać mniej więcej tak:
Month
Vehicle Oct-10 Nov-10 Dec-10
31057 256 267 159
31059 316 293 268
31060 348 250 206
tutaj kilka składni alternatywnej że używam (ten ostatni, ponieważ mój oryginalny dataframe ma więcej kolumn niż pokażę tutaj):
daply(DF, .(Vehicle, Month), identity)
daply(DF,.(Vehicle,Month), colwise(identity,.(Samples)))
jednak to, co dostaję w zamian jest dość zawiły:
Month
Vehicle Oct-10 Nov-10 Dec-10
31057 List,3 List,3 List,3
31059 List,3 List,3 List,3
31060 List,3 List,3 List,3
użyłem funkcji str
na wyjściu, jak niektórzy komentatorzy sugerowali, a oto fragment:
List of 9
$ :'data.frame': 1 obs. of 3 variables:
..$ Month : Ord.factor w/ 3 levels "Oct-10"<"Nov-10"<..: 1
..$ Vehicle: Factor w/ 3 levels "31057","31059",..: 1
..$ Samples: int 256
$ :'data.frame': 1 obs. of 3 variables:
..$ Month : Ord.factor w/ 3 levels "Oct-10"<"Nov-10"<..: 1
..$ Vehicle: Factor w/ 3 levels "31057","31059",..: 2
..$ Samples: int 316
Czego mi brakuje? Czy istnieje sposób na zrobienie tego po prostu z pakietami podstawowymi? Dzięki!
Poniżej Dput
ramki danych, jeśli chcesz, aby odtworzyć to:
structure(list(Month = structure(c(1L, 1L, 1L, 2L, 2L, 2L, 3L,
3L, 3L), .Label = c("Oct-10", "Nov-10", "Dec-10"), class = c("ordered",
"factor")), Vehicle = structure(c(1L, 2L, 3L, 1L, 2L, 3L, 1L,
2L, 3L), .Label = c("31057", "31059", "31060"), class = "factor"),
Samples = c(256L, 316L, 348L, 267L, 293L, 250L, 159L, 268L,
206L)), .Names = c("Month", "Vehicle", "Samples"), class = "data.frame", row.names = c(NA,
9L))
Przydałoby się trochę więcej informacji. Spróbuj str (DF) i wklej dane wyjściowe do pytania. Lub użyj dput (DF), aby zapewnić ludziom swoje dane do pracy, jeśli nie jest duża (podzbiór go, jeśli jest). – nzcoops
Nie jest oczywiste, co próbujesz tutaj zrobić. Wygląda na to, że próbujesz przekształcić dane, ponieważ 'identity' nie wykonuje żadnych operacji na swoich argumentach. Powiedz nam, jakie są twoje oczekiwane rezultaty. – Andrie
Zobacz http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example, w jaki sposób uczynić swój kod w pytaniu powtarzalnym. –