假设我们有来自不同学校、不同班级的数据,如下所示:

df <- data.frame(school= rep(c("Oldenburg", "Berlin", "Homburg"), each= 4), class= rep(LETTERS[1:4], 3))

现在我需要将数据子集,例如,我们可能需要来自学校BerlinB和学校OldenburgA的数据.我们能做的是

subset(df, school == "Berlin" & class == "B" | school== "Oldenburg" & class == "A")

但在其他情况下,我们需要其他学校的其他班级,数据中可能也有一些新学校或新班级.因此,我不能总是手写学校和班级的名称,而是需要根据两个条件自动设置数据子集.

我的try 是提供两个相同长度的向量,一个表示学校名称,另一个表示班级名称.对于上面的示例,它将是schools <- c("Berlin", "Oldenburg")classes <- c("B", "A").我找不到任何解决这个问题的办法.有什么主意吗?

推荐答案

我建议用你需要过滤的成对学校/班级创建一个data.frame,然后对它们进行内部连接.

need <- data.frame(school = c("Berlin", "Oldenburg"), class = c("B", "A"))
need
#      school class
# 1    Berlin     B
# 2 Oldenburg     A

### for kicks, just to show that other things in `df` are retained
df$num <- 1:nrow(df)
merge(df, need, by = c("school", "class"))
#      school class num
# 1    Berlin     B   6
# 2 Oldenburg     A   1

我更喜欢用它们制作框架的一个原因是它通常更容易维护:它是一个框架,可以保存为CSV或类似的格式,以便于更新,也可以跨平台.它还允许简单的帧操作,例如,如果您希望(比方说)只有一行的值,它们是merge(df, need[2,], ...)或类似的.

有关联接的信息,请参阅:

R相关问答推荐

从具有随机模式的字符串中提取值

使用ggcorrplot在相关性矩阵上标注supertitle和index标签

工作流程_set带有Dplyrr风格的 Select 器,用于 Select 结果和预测因子R

如何在R中添加截止点到ROC曲线图?

移除仪表板Quarto中顶盖和车身之间的白色区域

将多列合并为单独的名称—值对

如何通过ggplot2添加短轴和删除长轴?

从一个列表的框架中移除列表包装器

自动STAT_SUMMARY统计与手动标准误差之间的差异

在生成打印的自定义函数中,可以通过变量将线型或 colored颜色 设置为NULL吗?

随机将数据帧中特定列上的某些行设置为NA

长/纬点继续在堪萨斯-SF结束,整齐的人口普查

如何更改包中函数中的参数?

如何创建直方图与对齐的每月箱?

从多行中 Select 最小值

真实世界坐标的逆st_变换

如果缺少时间,如何向日期-时间列添加时间

从data.table列表中提取特定组值,并在R中作为向量返回

基于已有ID列创建唯一ID

如何在分组蜂群小区中正确定位标签