首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用R实现基于对象和变量的数据过滤

使用R实现基于对象和变量的数据过滤
EN

Stack Overflow用户
提问于 2021-07-12 14:03:35
回答 2查看 41关注 0票数 0

我正在尝试从变量中过滤对象。这是我的数据;

代码语言:javascript
运行
复制
head(DfUse)
InstanceType  ProductDescription      SpotPrice       ymd_hms(Timestamp)
<chr>                 <chr>           <dbl>                    <chr> 
1   a1.2xlarge  Linux/UNIX  0.0671  06:17:23
2   a1.2xlarge  Red Hat Enterprise Linux    0.1971  06:17:23
3   a1.2xlarge  SUSE Linux  0.2171  06:17:23
4   a1.4xlarge  Linux/UNIX  0.1343  12:15:54
5   a1.4xlarge  Red Hat Enterprise Linux    0.2643  12:15:54
6   a1.4xlarge  SUSE Linux  0.2843  12:15:54

数据维度为

代码语言:javascript
运行
复制
dim(DfUse)
[1] 10078     4

数据集结构

代码语言:javascript
运行
复制
str(DfUse)
'data.frame':   10078 obs. of  4 variables:
 $ InstanceType      : chr  "  a1.2xlarge" "  a1.2xlarge" "  a1.2xlarge" "  a1.4xlarge" ...
 $ ProductDescription: chr  "  Linux/UNIX" "  Red Hat Enterprise Linux" "  SUSE Linux" "  Linux/UNIX" ...
 $ SpotPrice         : num  0.0671 0.1971 0.2171 0.1343 0.2643 ...
 $ ymd_hms(Timestamp): chr  "06:17:23" "06:17:23" "06:17:23" "12:15:54" ...

当我尝试过滤的时候

代码语言:javascript
运行
复制
filter(DfUse, InstanceType == 'a1.2xlarge')
0 rows

请帮助过滤数据集。我想按其他变量堆叠所有经过筛选的值。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-12 14:05:11

从数据集结构上看,您的数据中似乎有一些空白。您可以使用trimws将其删除。

代码语言:javascript
运行
复制
dplyr::filter(DfUse, trimws(InstanceType) == 'a1.2xlarge')

有了R基subset -

代码语言:javascript
运行
复制
subset(DfUse, trimws(InstanceType) == 'a1.2xlarge')
票数 2
EN

Stack Overflow用户

发布于 2021-07-13 01:40:04

转换所有character列可能更好,方法是删除开头或结尾的空格(以避免任何进一步的问题),然后执行filter

代码语言:javascript
运行
复制
library(dplyr)
DfUse %>%
   mutate(across(where(is.character), trimws)) %>%
   filter(InstanceType == "a1.2xlarge")
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68342572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档