R 如何从过滤后的数据帧';内存';
我在一些因子级别上对一个数据帧进行子集设置,结果发现因子级别虽然计算为0值,但在过滤后的数据帧中以某种方式保留了下来,就好像它们保留在内存中一样。以下是一些说明性数据:R 如何从过滤后的数据帧';内存';,r,R,我在一些因子级别上对一个数据帧进行子集设置,结果发现因子级别虽然计算为0值,但在过滤后的数据帧中以某种方式保留了下来,就好像它们保留在内存中一样。以下是一些说明性数据: set.seed(121) df1 <- data.frame( Fac1 = rep(LETTERS[1:5], 2), Fac2 = sample(letters[1:3], 10, replace = T), Num = sample(1:20, 10) ) df1 Fac1 Fac2 Num 1
set.seed(121)
df1 <- data.frame(
Fac1 = rep(LETTERS[1:5], 2),
Fac2 = sample(letters[1:3], 10, replace = T),
Num = sample(1:20, 10)
)
df1
Fac1 Fac2 Num
1 A b 19
2 B c 15
3 C b 12
4 D c 3
5 E b 8
6 A b 5
7 B b 2
8 C b 9
9 D a 10
10 E a 13
看起来一切正常,具有这些值的行已从数据帧中消失:
df2
Fac1 Fac2 Num
2 B c 15
4 D c 3
9 D a 10
10 E a 13
但是如果我这样做,例如表
,系数水平仍然存在:
table(df2$Fac1)
A B C D E
0 1 0 2 1
如何从过滤后的数据帧中永久删除不需要的因子级别?您可以执行以下操作:
table(droplevels(df2$Fac1))
B C D E
1 1 1 1
或应用于整个df:
df2 <- droplevels(df1[-which(df1$Fac1 == "A" | df1$Fac2 == "b"), ])
df2以及如何从数据帧中删除不需要的因子级别?更新了post.ok,但是表
的输出应该是B D E 1 2 1
您的虚拟数据与预期结果不匹配。它给出了正确的结果。你是对的,我在设置种子时犯了一个错误;已更正。请再次转换为系数<代码>df2$Fac1
df2 <- droplevels(df1[-which(df1$Fac1 == "A" | df1$Fac2 == "b"), ])