2016-05-10 22 views
0

Noob R Frage hier von einem Matlab/Python-Benutzer. Ich habe ein Dataset mit Hunderten von verschiedenen Benutzern, von denen jeder eine eindeutige Anzahl von Datenzeilen hat, und möchte die Daten als eine Liste von Matrizen speichern. So kann Benutzer 1 eine Matrix von 500 Zeilen haben, Benutzer 2 kann eine Matrix von 250 haben und so weiter. Dies wird als Eingaben für ein hierarchisches Logit mit einer Mischung von Normalen verwendet, um die Betas jedes Benutzers zu erklären. Spalte 1 meines Datasets ist eine Benutzer-ID und der Rest der Spalten sind numerische Werte.Speichern hierarchischer Daten als eine Liste von Matrizen in R

data <- read.csv("hierarchical_dataset.csv", header=FALSE) 
nlgtt = length(table(data[[1]]))       # number of users 
users = names(table(data[[1]]))       # user ids 

Alle bisher gut, aber hier ist, wo ich bin immer mein Fehler:

TV = matrix() 
testdata = list() 

for (i in 1:nlgtt) 
{ TV[i] = matrix(table(data[[1]])[[i]])     # number of rows per user 
    print(TV[i])           # should equal the below line 
    print(dim(data[data[[1]] == users[i], ]))    # should equal the above line 
    testdata[i] = data[data[[1]] == users[i], ]   # store hierarchically by user 
} 

Wenn ich ausführen, um die oben, die gedruckte Werte übereinstimmen, so dass die korrekten Daten abgerufen werden, sondern dann bekomme ich einfache Wiederholungen der users[i] Wert (die Benutzer-ID) für jede testdata[i], und auch eine number of items to replace is not a multiple of replacement length Fehler. Ich bin mir sicher, dass dies nur ein einfaches Formatierungsproblem ist, aber ich habe mich umgeschaut und nichts gefunden, was mein Problem löst. Hilfe geschätzt!

Antwort

0

Sie könnten 10 aus den apply Familienfunktionen verwenden. Bitte beachten Sie das Beispiel unten.

dataset <- data.frame(user_id = c(1,1,2), variable_a = c(1,2,3)) 
lapply(unique(dataset$user_id), function(id) dataset[dataset$user_id == id,]) 

Der Ausgang gibt eine 2-Element-Liste mit Matrizen von User_id und variable_a, wobei jedes Element durch den Benutzer eindeutig ist.