R:使用dplyr中的管道%>%,按数据帧列表中的列计算平均值

时间:2019-01-09 16:50:50

标签: r dplyr

我正在尝试在%>%软件包中使用管道dplyr来变得更好。我知道使用管道(%>%)的全部要点是它将管道中的第一个参数替换为通过管道连接的参数。也就是说,在此示例中:

area = rep(c(3:7), 5) + rnorm(5)

管道

area %>% 
  mean

正常函数相等

`mean(area)`.

我的问题是何时到达数据框。我想在数据帧列表中拆分数据帧,然后计算每area列的均值。但是,我不知道如何调用列而不是数据框?

我知道我可以通过aggregate(area~ year, df, mean)来按年获得收入,但是我想练习管道。

谢谢!


# Dummy data
set.seed(13)
df<-data.frame(year = rep(c(1:5), each = 5),
               area = rep(c(3:7), each = 5) + rnorm(1))

# Calculate means. 
# Neither `mean(df$area)`, `mean("area")` or `mean[area]` does not work. How to call the column correctly?

df %>% 
  split(df$year) %>%
  mean

2 个答案:

答案 0 :(得分:5)

这吗?

 df %>% 
      group_by(year) %>% 
      summarise(Mean=mean(area))

答案 1 :(得分:3)

我们需要从listdata.framesplit中的list中提取列。一种选择是通过mapsummarise循环访问df %>% split(.$year) %>% map_df(~ .x %>% summarise(area = mean(area))) 和“区域”。

fn main() {
    let mut v: Vec<String> = Vec::new();
    let mut newstr = String::from("nslookup");
    for arg in std::env::args() {
        v.push(arg);
        newstr.push_str(&format!(" {}", arg));
    }
    println!("{:?}", v);
    println!("{}", newstr);
}