首页 > 解决方案 > 从一列中过滤多个变量

问题描述

我有一个问题在这个论坛上找不到答案。我一直在尝试从 R 中的数据集中过滤一列。我正在使用一个包含 7321 行和 28 列的数据集。一栏是关于企业类型的,有四个不同的变量:Wirtschaft、Hochschule、außeruniversitäre Forschung 和 Sonstige。我想将 Wirtschaft 和 außeruniversitäre Forschung 合并到一个名为 private 的新列中,并将 Hochschule 变量过滤到一个名为 public 的新列中。现在,我尝试了以下方法:

首先,我尝试创建一个包含两个“私有变量”的子集:

subdataprivate <- subset(data, typ == "außeruniversitäre Forschung" & typ == "Wirtschaft")

这里的问题是,我得到一个包含 28 个变量的 0 个观察值的子集。当我单独运行代码时,如下所示:

subdataprivate1 <- subset(data, typ == "außeruniversitäre Forschung")

subdataprivate2 <- subset(data, typ == "Wirtschaft")

我确实得到了所有变量的足够观察值(28 个变量的 1559 个观察值和 28 个变量的 3548 个观察值)。问题是,我需要结合这些类型的业务来运行我的分析。

当我尝试使用 dplyr 包过滤数据时,也会出现同样的问题。谁能告诉我我做错了什么?我对 R 和这个论坛还很陌生,所以我提前为我提出这个问题的外行方式道歉。

标签: rfiltersubset

解决方案


mutate在不发布您的数据的情况下,我必须使用虚拟数据,但我会使用and做类似的事情if_else。一旦你有了这个列,你就可以像使用 base R 一样使用 subsetting 或使用filterfrom dplyr

library(tidyverse)

data <- tibble(school = rep(c("school 1", "school 2", "school 3", "school 4"), 5))

data_transformed <- data %>%
 mutate(private_public = if_else(school == "school 1" | school == "school 2",
                                 "private",
                                 "public"))

推荐阅读