如何在R中用条件来计算列中的值(附多种方法的实例)

128 阅读1分钟

你可以使用以下方法来计算R语言中带有特定条件的数据框架中某一列的数值数量。

方法1:用条件计算一列中的值

nrow(df[df$column1 == 'value1', ])

方法2:用条件计算多列中的数值

nrow(df[df$column1 == 'value1' & df$column2 == 'value2', ]) 

下面的例子展示了如何在R语言中使用下面的数据框架来实践每种方法:

#create data frame
df <- data.frame(team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'),
                 position=c('G', 'G', 'F', 'F', 'G', 'G', 'F', 'F'),
                 points=c(10, 12, 3, 14, 22, 15, 17, 17))

#view data frame
df

  team position points
1    A        G     10
2    A        G     12
3    A        F      3
4    A        F     14
5    B        G     22
6    B        G     15
7    B        F     17
8    B        F     17

例子1:用条件计算一列中的值

下面的代码显示了如何计算团队列中值等于 "A"的数值:

#count number of rows where team is equal to 'B'
nrow(df[df$team == 'B', ])

[1] 4

我们可以看到,在团队列中有4个值等于'B'。

例2:用条件计算多列中的数值

下面的代码显示了如何计算数据框中团队列等于'B'且位置列等于'F'的行的数量:

#count number of rows where team is equal to 'B' and position is equal to 'F'
nrow(df[df$team == 'B' & df$position == 'F', ])

[1] 2

我们可以看到,数据框中有2行同时满足这些条件。

我们可以使用类似的语法来计算满足任何条件的行的数量。

例如,下面的代码显示了如何计算满足三个条件的行的数量:

  • 团队等于'B
  • 位置等于'G
  • 积分大于20
#count rows where team is 'B' and position is 'G' and points > 20
nrow(df[df$team == 'B' & df$position == 'G' & df$points > 20, ])

[1] 1

我们可以看到,数据框中只有1行满足所有这三个条件。