使用 R 基于对象和变量的数据过滤器

Data Filter based on object and variable using R

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

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

数据维度为

dim(DfUse)
[1] 10078     4

数据集结构

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" ...

当我尝试过滤时

filter(DfUse, InstanceType == 'a1.2xlarge')
0 rows

请帮助过滤数据集。我想按其他变量分组堆叠所有过滤值。

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

dplyr::filter(DfUse, trimws(InstanceType) == 'a1.2xlarge')

带基数 R subset -

subset(DfUse, trimws(InstanceType) == 'a1.2xlarge')

最好通过删除开头或结尾的空格来转换所有 character 列(以避免任何进一步的问题),然后执行 filter

library(dplyr)
DfUse %>%
   mutate(across(where(is.character), trimws)) %>%
   filter(InstanceType == "a1.2xlarge")