【发布时间】:2018-03-26 16:06:49
【问题描述】:
我正在尝试将数据框拆分为列表。 This question 很有帮助,但我也想删除用于分组的列,因为它会弄乱以后的步骤。 split 的 drop 参数仅适用于未使用的级别。数据框如下:
structure(list(Var1 = c(-1L, -1L, -1L, -1L, -1L, -1L, -1L, -1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, -1L, -1L, -1L,
-1L, -1L, -1L, -1L, -1L),
Var2 = c(-1L, -1L, -1L, -1L, 0L, -1L, -1L, -1L, 0L,
0L, 0L, -1L, -1L, -1L, -1L, -1L, -1L, -1L,
-1L, -1L, -1L, -1L, -1L, -1L, -1L, -1L, -1L,
-1L, -1L, -1L, -1L, -1L, -1L, -1L, -1L),
Var3 = c(1L, -1L, -1L, -1L, -1L, -1L, -1L, -1L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, -1L, -1L, -1L, -1L,
-1L, -1L, -1L, -1L),
Var4 = c(1L, -1L, -1L, 2L, -1L, -1L, -1L, 1L, 1L, 1L,
1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 1L, -1L, -1L, -1L, -1L,
-1L, -1L, -1L, -1L),
Var5 = c(1L, -1L, -1L, 2L, -1L, -1L, -1L, 2L, 1L, 1L,
1L, 1L, 1L, 0L, 1L, 0L, 1L, 0L, 1L, 0L, 1L,
0L, 0L, 1L, 1L, 1L, 1L, -1L, -1L, -1L, -1L,
-1L, -1L, -1L, -1L),
Bin = c(1L, 1L, 2L, 2L, 3L, 3L, 4L, 4L, 5L, 6L, 6L,
7L, 7L, 8L, 8L, 9L, 9L, 10L, 10L, 11L, 11L,
12L, 12L, 13L, 13L, 14L, 14L, 15L, 15L, 16L,
16L, 17L, 17L, 18L, 18L)),
.Names = c("Var1", "Var2", "Var3", "Var4", "Var5", "Bin"),
class = "data.frame", row.names = c(NA, -35L))
如何在删除“Bin”的同时按“Bin”拆分它?
【问题讨论】:
-
如果你有兴趣使用一个包,有
library(data.table); setDT(DF); split(DF, by="Bin", keep=FALSE) -
要记住的一个关键概念是您不能在字符值前面使用“-”(减号)。这仅适用于数字向量(可以使用
grep或which构造),并且您只能使用“!”使用您使用grepl或%in%构造的逻辑向量。
标签: r dataframe indexing negation