Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.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_Filter_Dataframe_Subset - Fatal编程技术网

过滤R中的数据帧和不需要的过滤结果

过滤R中的数据帧和不需要的过滤结果,r,filter,dataframe,subset,R,Filter,Dataframe,Subset,这个片段: names<-c("Alice","Bob","Charlie") ages<-c(25,24,25) friends<-data.frame(names,ages) a25 <- friends[friends$age==25,] a25 table(a25$names) 既然数据帧a25不包含“Bob”,为什么输出中会出现“Bob”?我希望有这样的输出(来自表命令): 我错过了什么 我的环境: R version 2.15.2 (2012-10-26)

这个片段:

names<-c("Alice","Bob","Charlie")
ages<-c(25,24,25)
friends<-data.frame(names,ages)
a25 <- friends[friends$age==25,]
a25
table(a25$names)
既然数据帧
a25
不包含“Bob”,为什么输出中会出现“Bob”?我希望有这样的输出(来自
命令):

我错过了什么

我的环境:

R version 2.15.2 (2012-10-26)
Platform: i386-w64-mingw32/i386 (32-bit)

这个问题在评论中似乎有答案。这个答案分享了一个额外的方法,并整合了评论中的建议

您描述的问题如下:“a25$names”变量中没有“Bob”,但当您使用
表时,会显示“Bob”。这是因为原始列中的标高已保留

table(a25$names)
# 
#   Alice     Bob Charlie 
#       1       0       1 
幸运的是,有一个名为
droplevels
的函数可以处理如下情况:

table(droplevels(a25$names))
# 
#   Alice Charlie 
#       1       1 
droplevels
功能也可以在
data.frame
上工作,允许您执行以下操作:

a25alt <- droplevels(friends[friends$ages==25,])
a25alt
#     names ages
# 1   Alice   25
# 3 Charlie   25
table(a25alt$names)
# 
#   Alice Charlie 
#       1       1 

这个问题在评论中似乎有答案。这个答案分享了一个额外的方法,并整合了评论中的建议

您描述的问题如下:“a25$names”变量中没有“Bob”,但当您使用
表时,会显示“Bob”。这是因为原始列中的标高已保留

table(a25$names)
# 
#   Alice     Bob Charlie 
#       1       0       1 
幸运的是,有一个名为
droplevels
的函数可以处理如下情况:

table(droplevels(a25$names))
# 
#   Alice Charlie 
#       1       1 
droplevels
功能也可以在
data.frame
上工作,允许您执行以下操作:

a25alt <- droplevels(friends[friends$ages==25,])
a25alt
#     names ages
# 1   Alice   25
# 3 Charlie   25
table(a25alt$names)
# 
#   Alice Charlie 
#       1       1 

您的
名称
变量已转换为因子。而
显示了因子的每一级的计数,即使它们的计数为0。@juba谢谢,所以当我创建
a25
变量时,它是否“继承”了三级因子?
a25
不是一个变量,它是一个数据框,是
friends
的子集。所以它继承了
friends
age
因子及其所有级别,是的。@juba好的,我理解。有可能得到我期望的结果吗?您可以尝试
25$age您的
names
变量已转换为因子。而
显示了因子的每一级的计数,即使它们的计数为0。@juba谢谢,所以当我创建
a25
变量时,它是否“继承”了三级因子?
a25
不是一个变量,它是一个数据框,是
friends
的子集。所以它继承了
friends
age
因子及其所有级别,是的。@juba好的,我理解。有可能得到我期望的结果吗?您可以尝试
25$age