Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何从过滤后的数据帧';内存';_R - Fatal编程技术网

R 如何从过滤后的数据帧';内存';

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

我在一些因子级别上对一个数据帧进行子集设置,结果发现因子级别虽然计算为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     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"), ])