R表函数,包括筛选出的行

R表函数,包括筛选出的行,r,dataframe,R,Dataframe,我有一个用readRDS()作为df读入的数据帧。这包含许多带有城市和州的行。我只将加利福尼亚州的数据保存为df\u ca df_ca包含100列,我只保留了几个分类列。我创建了一个新的分类df,名为df\u cat。我想循环遍历分类列,并使用table函数获得频率。忽略用于故障排除的循环,我将var设置为city,并执行table函数创建一个名为cat_freq的新dfcat_freq包含来自df的所有城市,而不是df_ca,它们的频率为0。如果他们被过滤掉了,为什么还会出现呢?我是R新手,但

我有一个用
readRDS()
作为df读入的数据帧。这包含许多带有城市和州的行。我只将加利福尼亚州的数据保存为
df\u ca

df_ca
包含100列,我只保留了几个分类列。我创建了一个新的分类df,名为
df\u cat
。我想循环遍历分类列,并使用table函数获得频率。忽略用于故障排除的循环,我将var设置为
city
,并执行table函数创建一个名为
cat_freq
的新df
cat_freq
包含来自
df
的所有城市,而不是
df_ca
,它们的频率为0。如果他们被过滤掉了,为什么还会出现呢?我是R新手,但有python背景

df <- as.data.frame(readRDS('some.data.5140')) 
df_ca <- df[df$car.state == "ca",]
cat_col <- (unlist(list('color', 'city', 'deliver', 'type')))
df_cat <- df_ca[, cat_col]
var <- "city"
cat_freq <-  data.frame(table(df_cat[var]))

df这主要是因为列的类型为
factor
,如果将它们转换为字符,应该会有所帮助

df_ca <- df[df$car.state == "ca",]
cat_col <- c('color', 'city', 'deliver', 'type')
df_cat <- df_ca[, cat_col]
#Convert all columns in df_cat to 
df_cat[] <- lapply(df_cat, as.character) character
var <- "city"
cat_freq <-  data.frame(table(df_cat[var]))

df_ca结合液滴液位解决了问题

df <- as.data.frame(readRDS('some.data.5140')) 
df_ca <- df[df$car.state == "ca",]
cat_col <- (unlist(list('color', 'city', 'deliver', 'type')))
df_cat <- df_ca[, cat_col]
df_cat <- droplevels(df_cat)
var <- "city"
cat_freq <-  data.frame(table(df_cat[var]))

df看看
droplevels
。doplevels成功了-谢谢!托马斯:你可以接受你的回答,表明问题已经解决了。我将删除我的答案。