如何根据字符串匹配对R数据帧进行子集化?

时间:2015-07-26 04:08:58

标签: r

假设数据框如下所示:

   Name Score 
1  John  10
2  John   2
3  James  5

我想计算所有具有John姓名的分数值的平均值。

2 个答案:

答案 0 :(得分:1)

您可以使用aggregate轻松执行每个人得分的平均值:

> aggregate(Score ~ Name, data=d, FUN=mean)
   Name Score
1 James     5
2  John     6

答案 1 :(得分:0)

使用dplyr

对于每个名字:

library(dplyr)
df %>%
  group_by(Name) %>%
  summarise(Value=mean(Score))

   Name Value
1 James     5
2  John     6

过滤

filter(df, Name=="John") %>%
  group_by(Name) %>%
  summarise(Value=mean(Score))

  Name Value
1 John     6

使用sqldf

library(sqldf)
sqldf("SELECT Name, avg(Score) AS Score
      FROM df GROUP BY Name")

   Name Score
1 James     5
2  John     6

过滤

sqldf("SELECT Name, avg(Score) AS Score
      FROM df 
      WHERE Name LIKE 'John'")

  Name Score
1 John     6