如何在 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
示例 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 中执行其他常见任务: