您好
我有X用户和7列的矩阵(is.matrix(users)= TRUE)。第一列表示具有0或1的公/母。如何将该矩阵分成两个新矩阵。一个与所有男孩分数和一个与所有女孩分数。
我有
USERS
所有用户
sex intelligence ... status
user1 0 1234 ... ...
user2 1 5678 ... ...
user3 1 8765 ... ...
... ... ... ... ...
userX 0 4321 ... ...
我需要
BOYS
sex intelligence ... status
user2 1 5678 ... ...
user3 1 8765 ... ...
GIRLS
sex Intelligence ... status
user1 0 1234 ... ...
userX 0 4321 ... ...
答案 0 :(得分:0)
您可以将矩阵转换为数据帧并将其子集
df <- as.data.frame(users)
girls <- df[df$sex == 0, ]
boys <- df[df$sex == 1, ]
如果您需要再次使用矩阵:
girls <- as.matrix(girls)
boys <- as.matrix(boys)
答案 1 :(得分:0)
您可以尝试split
lst <- setNames(lapply(split(1:nrow(mat1), mat1[,"sex"]), function(i) mat1[i,]), c("GIRLS", "BOYS"))
如果您需要两个数据集而不是将其保留在列表中(我希望将其放在列表中)
list2env(lst, envir=.GlobalEnv)
<environment: R_GlobalEnv>
GIRLS
# sex intelligence
#[1,] 0 1236
#[2,] 0 1241
BOYS
set.seed(42)
mat1 <- as.matrix(data.frame(sex=sample(0:1, 10, replace=TRUE), intelligence=1234:1243))