如何根据多个条件在 r 中对数据框进行子集化


在 R 中,您可以使用以下方法根据多个条件来子定义数据框:

方法一:使用“OR”逻辑对数据帧进行子集化

 df_sub <- subset(df, team == ' A ' | points < 20 )

此特定示例将对团队列等于“A”点数列小于 20 的行的数据框进行子集化。

方法2:使用“AND”逻辑对数据帧进行子集化

 df_sub <- subset(df, team == ' A ' & points < 20 )

此特定示例将对团队列等于“A”点数列小于 20 的行的数据框进行子集化。

本教程通过以下数据框解释了如何在实践中使用每种方法:

 #create data frame
df <- data. frame (team=c('A', 'A', 'A', 'B', 'B', 'B'),
                 position=c('Guard', 'Guard', 'Forward',
                            'Guard', 'Forward', 'Forward'),
                 dots=c(22, 25, 19, 22, 12, 35))

#view data frame
df

  team position points
1 A Guard 22
2 A Guard 25
3 A Forward 19
4 B Guard 22
5 B Forward 12
6 B Forward 35

示例 1:使用“OR”逻辑对数据帧进行子集化

以下代码显示如何对团队列等于“A”点数列小于 20 的行的数据框进行子集化:

 #subset data frame where team is 'A' or points is less than 20
df_sub <- subset(df, team == ' A ' | points < 20 )

#view subset
df_sub

  team position points
1 A Guard 22
2 A Guard 25
3 A Forward 19
5 B Forward 12

子集中的每一行在团队列中的值均为“A” ,或者在分数列中的值小于 20。

|该符号代表R中的“OR”。

在此示例中,我们仅在subset()函数中包含一个“OR”符号,但我们可以根据更多条件包含任意多个子集。

示例 2:使用“AND”逻辑对数据帧进行子集化

以下代码显示如何对团队列等于“A”点数列小于 20 的行的数据框进行子集化:

 #subset data frame where team is 'A' and points is less than 20
df_sub <- subset(df, team == ' A ' & points < 20 )

#view subset
df_sub

  team position points
3 A Forward 19

请注意,生成的子集仅包含一行。

事实上,只有一行在球队列中的值是“A” ,并且在积分列中的值小于 20。

:符号&在R中表示“与”。

在此示例中,我们仅在subset()函数中包含一个“AND”符号,但我们可以根据更多条件包含任意多个子集。

其他资源

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

如何在R中的数据框中选择单行
如何在R中选择具有NA值的行
如何在R中根据向量值选择行

添加评论

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