我有一个非常简单的问题,不知怎的,我无法解决它,尽管有两个小时的努力。如果没有向您发送数据,我必须用文字和非常少的代码来解释我的问题。
我有一个包含多个变量和一个因子(const input: <Your_Type_Here> = {...
)的数据框(elecData
)。我想要做的就是创建一个新的数据框,选择一个因子级别Partido
,这样我就有了一个数据框,其中只有Podemos
作为因子Podemos
的行存在。我使用的代码如下:
Partido
出于某种原因,新数据框不会仅选择预期的级别(PodemosSort=subset(elecData, subset=elecData$Partido=="Podemos")
),而是选择因子的所有级别。此外,我在一个简单的数据帧上使用了子集函数,我查看它是否有效并且确实如此。为什么在这种情况下不起作用?
提前谢谢。
答案 0 :(得分:0)
df <- data.frame(A = 1:4, B = factor(c("AA","BB","BB","AA"), levels = c( AA","BB")))
df
# A B
# 1 1 AA
# 2 2 BB
# 3 3 BB
# 4 4 AA
检查列类
sapply(df,class)
# A B
# "integer" "factor"
因子列"B"
levels(df$B)
# [1] "AA" "BB"
级别为"BB"
df[df$B == "BB",]
# A B
# 2 2 BB
# 3 3 BB
使用table()
函数
table(df$B)
# AA BB
# 2 2
使用subset()
功能
subset(df, df$B == "BB")
# A B
# 2 2 BB
# 3 3 BB
要删除频率计数为0的级别,请使用droplevels()
功能。如果存在频率为0的任何级别。
levels(df$B) <- droplevels(df$B)
levels(df$B)