将分层数据存储为R中的矩阵列表

时间:2016-05-10 05:15:42

标签: r dataset matrix hierarchical

Noob R来自Matlab / Python用户的问题。我有一个包含数百个不同用户的数据集,每个用户都有一个唯一数量的数据行,并希望将数据存储为矩阵列表。因此,用户1可以具有500行的矩阵,用户2可以具有250的矩阵,等等。这将用作具有法线混合的分层logit的输入,以解释每个用户的beta。我的数据集的第1列是用户ID,其余的cols是数值。

MouseDown

到目前为止一切都很好,但这里是我收到错误的地方:

MyPoints

当我运行上面的内容时,打印的值匹配,因此正在检索正确的数据,但随后我会简单地重复每个data <- read.csv("hierarchical_dataset.csv", header=FALSE) nlgtt = length(table(data[[1]])) # number of users users = names(table(data[[1]])) # user ids 的{​​{1}}值(用户ID),并且还有一个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 } 错误。我确定这只是一个简单的格式化问题,但已经环顾四周,未能找到解决我问题的任何内容。帮助赞赏!

1 个答案:

答案 0 :(得分:0)

您可能希望使用base::lapply家庭功能中的apply。请参阅下面的示例。

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,])

输出提供了一个包含user_id和variable_a矩阵的2元素列表,其中每个元素都是用户唯一的。