gpt4 book ai didi

R - 过滤数据集中的因素计数

转载 作者:行者123 更新时间:2023-12-04 09:54:44 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





R table function - how to remove 0 counts?

(1 个回答)



Drop unused factor levels in a subsetted data frame

(15 个回答)


去年关闭。




我有以下格式的数据集 -

Item Year
A 2018
B 2018
B 2019
A 2017
Z 2019

我仅使用以下方法选择 2018 年的项目:
library(dplyr)
data2 <- data %>% filter(Year == "2018")

现在,当我使用 table() 获取项目计数时,出现了问题。输出看起来像 -
table(data2$Item)

A B Z
1 1 0

我不明白为什么 Z 被包含在这里。 data2 中没有 Z 项。它搞乱了汇总统计。

有什么方法可以防止包含原始数据集中的项目吗?我尝试在没有 dplyr 的情况下过滤原始数据集,但 table() 仍然返回相同的输出。

最佳答案

如果“项目”是 factor ,它可能是未使用的级别。如果我们检查 levels ,它仍然存在

levels(data2$Item)
#[1] "A" "B" "Z"

我们可以使用 droplevels
table(droplevels(data2$Item))
# A B
#1 1

或指定 .dropcount
library(dplyr)
data %>%
filter(Year == "2018") %>%
count(Item, .drop = TRUE)
# Item n
#1 A 1
#2 B 1

数据
data <- structure(list(Item = structure(c(1L, 2L, 2L, 1L, 3L), .Label = c("A", 
"B", "Z"), class = "factor"), Year = c(2018L, 2018L, 2019L, 2017L,
2019L)), row.names = c(NA, -5L), class = "data.frame")

关于R - 过滤数据集中的因素计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61943774/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com