r - 如何通过多个因素选择多行?
问题描述
我有一些数据框,我想根据某些因素选择行。我现在可以做的是分别构建子数据框,然后将它们组合在一起。这是另一种有效的方法吗?
For instance, I want to pick the rows which in a1 is "F" and the rows which a4 is "John" together.
a1 <- c("F","M","F","M","F","F")
a2 <- c("S","S","S","T","T","S")
a3 <- c(250, 66, 95, 2, 1, 4)
a4 <- c("John","Annie","King","John","Tom","Lily")
df <- data.frame(a1,a2,a3,a4)
df2 <- df[df$a1 == "F",] # sub-dataframe which a1 is "F"
df3 <- df[df$a4 == "John",] # sub-dataframe which a4 is "John"
rbind(df2,df3) # combine them together
#ideal result
> rbind(df2,df3)
a1 a2 a3 a4
1 F S 250 John
3 F S 95 King
5 F T 1 Tom
6 F S 4 Lily
11 F S 250 John
4 M T 2 John
解决方案
使用base R,您可以通过插入“OR”运算符来实现这一点
df[df$a1 == "F" | df$a4 == "John",]
另一种方法是使用dplyr
包:
df %>% filter(a1 == "F" | a4 == "John")
推荐阅读
- java - 如何使用来自 Firebase 实时数据库的电子邮件检索数据?
- batch-file - 在引号内连接 Windows 批处理文件命令中的变量和字符串
- php - 无法添加默认标题图片
- python - 如何在 Keras (tensorflow) 中为 LSTM 正确塑造我的 2D 输入和输出?输入 3D 并输出一个热编码时产生错误
- java - 从没有 GUI 的命令行运行 JavaFX 应用程序
- php - 用两个条件过滤数组php
- sql - 如何创建唯一数字和频率的总和
- javascript - ChartJS - Y 轴线不绘制
- r - 如何根据子类别分配类别
- heroku - 离线托管在 Heroku 上的 Discord 机器人