Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何向数据帧的每一行添加摘要统计值?_R_Dplyr_Summary - Fatal编程技术网

R 如何向数据帧的每一行添加摘要统计值?

R 如何向数据帧的每一行添加摘要统计值?,r,dplyr,summary,R,Dplyr,Summary,我想知道一种将摘要统计信息添加回数据帧的每一行的简洁方法 下面的代码可以工作,但应该是一种更快的方法,对吗 library("tidyverse") data <- (iris) means <- iris %>% group_by(Species) %>% summarise( Sepal.Length = mean(Sepal.Length), Sepal.Width = mean(Sepal.Width) ) data <- m

我想知道一种将摘要统计信息添加回数据帧的每一行的简洁方法

下面的代码可以工作,但应该是一种更快的方法,对吗

library("tidyverse")
data <- (iris)

means <- iris %>%
  group_by(Species) %>%
  summarise(
    Sepal.Length = mean(Sepal.Length),
    Sepal.Width = mean(Sepal.Width)
  )

data <- merge(data, means, by = "Species")
库(“tidyverse”)
数据%
总结(
萼片长度=平均值(萼片长度),
萼片宽度=平均值(萼片宽度)
)

数据您可以使用
dplyr::mutate\u在

iris %>% group_by(Species) %>% 
  mutate_at(.vars = vars(Sepal.Length,Sepal.Width), 
    .funs = list(mean = ~mean))
我们需要
列表(mean=~mean)
位,而不仅仅是
.funs=mean
来重命名列,而不是覆盖原始列

# A tibble: 150 x 7
# Groups:   Species [3]
   Sepal.Length Sepal.Width Petal.Length Petal.Width Species Sepal.Length_mean Sepal.Width_mean
          <dbl>       <dbl>        <dbl>       <dbl> <fct>               <dbl>            <dbl>
 1          5.1         3.5          1.4         0.2 setosa               5.01             3.43
 2          4.9         3            1.4         0.2 setosa               5.01             3.43
 3          4.7         3.2          1.3         0.2 setosa               5.01             3.43
 4          4.6         3.1          1.5         0.2 setosa               5.01             3.43
 5          5           3.6          1.4         0.2 setosa               5.01             3.43
 6          5.4         3.9          1.7         0.4 setosa               5.01             3.43
 7          4.6         3.4          1.4         0.3 setosa               5.01             3.43
 8          5           3.4          1.5         0.2 setosa               5.01             3.43
 9          4.4         2.9          1.4         0.2 setosa               5.01             3.43
10          4.9         3.1          1.5         0.1 setosa               5.01             3.43
#一个tible:150 x 7
#类群:种[3]
萼片。长萼片。宽花瓣。长花瓣。宽种萼片。长\u表示萼片。宽\u表示
1 5.1 3.5 1.4 0.2 setosa 5.01 3.43
2 4.9 3 1.4 0.2 setosa 5.01 3.43
3 4.7 3.2 1.3 0.2 setosa 5.01 3.43
4.6 3.1 1.5 0.2 setosa 5.01 3.43
5 3.6 1.4 0.2 setosa 5.01 3.43
6 5.4 3.9 1.7 0.4刚毛5.01 3.43
7 4.6 3.4 1.4 0.3 setosa 5.01 3.43
8 5 3.4 1.5 0.2 setosa 5.01 3.43
9 4.4 2.9 1.4 0.2 setosa 5.01 3.43
10 4.9 3.1 1.5 0.1 setosa 5.01 3.43

一种方法是使用mutate

library("tidyverse")
data <- (iris)

data<-data %>% 
  group_by(Species) %>% 
  mutate(Sepal.Length.y=mean(Sepal.Length), Sepal.Width.y=mean(Sepal.Width)) 



库(“tidyverse”)
数据%
变异(萼片长度y=平均值(萼片长度),萼片宽度y=平均值(萼片宽度))
所以这和你之前做的非常相似,只是少了几个步骤。如果要重新排列列的顺序,可以对它们重新排序。另外,我建议您在帖子中更改Sepal.Length和Sepal.Width的列名,但是如果您没有指定唯一的名称,r只会在它们上面加一个.y,使它们唯一。
希望这能有所帮助。

只需使用
mutate
而不是
summary
,一步就能得到完全相同的结果。summary删除所有其他列,每个组只保留一个摘要值,mutate计算相同的值,然后将它们作为新值添加column@camille:不,它不是复制品。该问题只需要一个包含4行(摘要)的数据帧:3个组统计数据和1个总计统计数据。这个问题想将这些统计列连接回原始数据框的每一行。@smci知道了,所以dupe divibisan发布了?@divibisan:不,这个问题又不同了:这是关于将每个组的统计数据(收入总和)连接回原始数据框,然后计算汇总统计数据的汇总统计数据(每个每日收入小计占总收入的比例是多少)。各位,请轻点扳机!