我有一个问题,在这个论坛上找不到答案。我一直在尝试从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和这个论坛不是很陌生,所以对于我提出这个问题的外行方式,我事先表示歉意。
答案 0 :(得分:1)
无需发布您的数据,我必须使用伪数据,但是我会使用mutate
和if_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"))