如何根据多个条件在 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 中执行其他常见任务: