r - 如何在子集化后消除 R 数据集中因子变量中的水平?
问题描述
在下面的数据集中,子集之前的变量Region
具有以下结构:
> levels(corona$Region)
[1] " Montreal, QC"
[2] "Alabama"
[3] "Alameda County, CA"
[4] "Alaska"
[5] "Alberta"
[6] "American Samoa"
[7] "Anhui" ...
包括美国各州以及县、市等。
我想仅对运行代码的美国各州进行子集化:
require(RCurl)
require(foreign)
require(tidyverse)
corona = read.csv("https://coviddata.github.io/covid-api/v1/regions/cases.csv", sep =",",header = T)
cor <- corona[corona$Country=="United States" & corona$Region %in% state.name,]
这在某种程度上有效,但以某种方式保持了原始水平Region
:
> levels(cor$Region)
[1] " Montreal, QC"
[2] "Alabama"
[3] "Alameda County, CA"
[4] "Alaska"
[5] "Alberta"
[6] "American Samoa"
[7] "Anhui"
[8] "Arizona"
[9] "Arkansas"
[10] "Aruba" ...
好像子集从未发生过。我怎样才能只保留子集的级别(状态)?
解决方案
你可以试试
cor <- droplevels(cor)
这里,一个使用iris
数据集的例子:
ir <- subset(iris, Species != "setosa")
> str(ir)
'data.frame': 100 obs. of 5 variables:
$ Sepal.Length: num 7 6.4 6.9 5.5 6.5 5.7 6.3 4.9 6.6 5.2 ...
$ Sepal.Width : num 3.2 3.2 3.1 2.3 2.8 2.8 3.3 2.4 2.9 2.7 ...
$ Petal.Length: num 4.7 4.5 4.9 4 4.6 4.5 4.7 3.3 4.6 3.9 ...
$ Petal.Width : num 1.4 1.5 1.5 1.3 1.5 1.3 1.6 1 1.3 1.4 ...
$ Species : Factor w/ 3 levels "setosa","versicolor",..: 2 2 2 2 2 2 2 2 2 2 ...
尽管我们删除了一个级别的 Species,但它仍然显示了 3 个因子级别。但如果你正在做:
ir <- droplevels(ir)
> str(ir)
'data.frame': 100 obs. of 5 variables:
$ Sepal.Length: num 7 6.4 6.9 5.5 6.5 5.7 6.3 4.9 6.6 5.2 ...
$ Sepal.Width : num 3.2 3.2 3.1 2.3 2.8 2.8 3.3 2.4 2.9 2.7 ...
$ Petal.Length: num 4.7 4.5 4.9 4 4.6 4.5 4.7 3.3 4.6 3.9 ...
$ Petal.Width : num 1.4 1.5 1.5 1.3 1.5 1.3 1.6 1 1.3 1.4 ...
$ Species : Factor w/ 2 levels "versicolor","virginica": 1 1 1 1 1 1 1 1 1 1 ...
您会注意到,现在 Species 有 2 个因子水平而不是 3 个。
它回答了你的问题吗?
推荐阅读
- python-3.x - 无法从 python lambda 将 XML 写入 S3
- python - 在所有 Anaconda 环境中,Spyder 在加载期间不断崩溃
- ruby-on-rails - Has_many 到 rails 中的 has_many 关系问题
- node.js - 如何在路线上的每个给定时间段调用函数
- javascript - addEventListener 回调在 createElement 后不起作用(仅在 chrome 中)
- algorithm - 如何为我的问题找到正确的优化算法?
- r - ggridges - 将第一条数据线降低到绘图底部
- java - Java ModelMapper:将 DTO 映射到 EmbeddedId 实体类
- ios - 使用 Swift 在 Xcode 中避免从一个视图控制器到另一个视图控制器的延迟
- tensorflow - 如何对 TFlite 模型进行微调