从一列中过滤多个变量

时间:2018-10-30 13:45:37

标签: r filter subset

我有一个问题,在这个论坛上找不到答案。我一直在尝试从R中的数据集中过滤一列。我正在使用具有7321行和28列的数据集。关于业务类型的一列有四个不同的变量:Wirtschaft,Hochschule,außeruniversitäreForschung和Sonstige。我想将Wirtschaft和außeruniversitäreForschung合并到一个名为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")

对于所有变量,我确实获得了足够的观测值(1559个观测值包含28个变量,3548个观测值包含28个变量)。事实是,我需要将这些类型的业务结合起来才能进行分析。

当我尝试使用dplyr包过滤数据时,会出现相同的问题。 谁能告诉我我做错了吗?我对R和这个论坛不是很陌生,所以对于我提出这个问题的外行方式,我事先表示歉意。

1 个答案:

答案 0 :(得分:1)

无需发布您的数据,我必须使用伪数据,但是我会使用mutateif_else来做类似的事情。拥有此列后,即可使用与基数R相同的子集,或使用filter中的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"))