我正在使用子集从列值集合中提取
我有一个带有多个列的DF,其中一个是状态。我需要为状态获取频率,但仅针对某些状态。所以我有这个:
tmp <- subset(DF, DF$STATE %in% SOMESTATES)
a <- as.data.frame(table(tmp$STATE))
这几乎没问题。 tmp数据框只有属于SOMESTATES集的记录,很好。
问题是。表结果是整个DF的完整频率,而不仅仅是tmp。另一个没有值。
我的问题是SOMESTATES中的某些状态在DF中没有出现,这使我无法使用droplevels。 droplevels也取出那些零值。在这里:
例如,如果我使用这样的droplevel,我会松开我需要的某些状态的零值。
tmp <- subset(DF, DF$STATE %in% SOMESTATES)
tmp2 <- droplevels(tmp)
table(tmp2$STATE)
不仅呈现了SOMESTATES
中的所有州任何建议表示赞赏
答案 0 :(得分:2)
尝试类似:
tmp <- subset(DF, DF$STATE %in% SOMESTATES)
tmp$STATE <- factor(tmp$STATE, levels=SOMESTATES)
table(tmp$STATE)
因子函数会将其重新创建为一个新因子,其级别与SOMESTATES
完全匹配。那些不在SOMESTATES
中的州将不会被包括在内,因为它们既不在数据中也不在SOMESTATES
中,但SOMESTATES
中包含0个计数的州仍将包含在因子中,因此该表有0个计数。
另请注意,因子级别将按SOMESTATES
排序,因此该向量中的顺序将是使用它的表格或图表中显示的顺序。通常这是良性或有用的。
答案 1 :(得分:0)
使用table(factor(tmp$STATE))
或table(tmp$STATE[, drop=T])
。两者都将保留原始级别的订单。