如何在 r 中过滤 data.table(带有示例)


您可以使用以下方法从 R 中的 data.table 中过滤行:

方法 1:根据单个条件过滤行

 dt[col1 == ' A ', ]

方法 2:过滤列表中包含某个值的行

 dt[col1 %in% c(' A ', ' C '), ]

方法 3:过滤满足多个条件之一的行

 dt[col1 == ' A ' | col2 < 10 , ]

方法4:过滤满足多个条件的行

 dt[col1 == ' A ' & col2 < 10 , ]

以下示例展示了如何在实践中使用 R 中的以下 data.table 中的每种方法:

 library (data.table)

#create data table
dt <- data. table (team=c('A', 'A', 'A', 'B', 'C'),
                 points=c(99, 90, 86, 88, 95),
                 assists=c(33, 28, 31, 39, 34),
                 rebounds=c(30, 28, 24, 24, 28))

#view data table
dt

   team points assists rebounds
1: A 99 33 30
2: A 90 28 28
3: A 86 31 24
4: B 88 39 24
5: C 95 34 28

示例 1:根据条件过滤行

以下代码显示如何仅过滤team列中的值等于“A”的行:

 #filter for rows where team is A
dt[team == ' A ', ]

   team points assists rebounds
1: A 99 33 30
2: A 90 28 28
3: A 86 31 24

示例 2:过滤列表中包含某个值的行

以下代码显示如何仅过滤团队列中的值等于“A”或“C”的行:

 #filter for rows where team is A or C
dt[team %in% c(' A ', ' C '), ]

   team points assists rebounds
1: A 99 33 30
2: A 90 28 28
3: A 86 31 24
4: C 95 34 28

相关:如何在 R 中使用 %in% 运算符(附示例)

示例 3:过滤满足多个条件之一的行

以下代码显示如何仅过滤team列中的值等于“A”points列中的值小于 90 的行:

 #filter for rows where team is A or points < 90
dt[team == ' A ' | points < 90 , ]

   team points assists rebounds
1: A 99 33 30
2: A 90 28 28
3: A 86 31 24
4: B 88 39 24

|运算符在 R 中的意思是“OR”。

示例 4:过滤满足多个条件的行

以下代码显示如何仅过滤team列中的值等于“A”points列中的值小于 90 的行:

 #filter for rows where team is A and points < 90
dt[team == ' A ' & points < 90 , ]

   team points assists rebounds
1: A 86 31 24

&运算符在 R 中表示“AND”。

其他资源

以下教程解释了如何在 R 中执行其他常见任务:

如何在 R 中过滤向量
R中如何删除带零的行
如何从R中的数据框中删除空白行

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注