我正試圖計算一個資料框架串列中各組平均值的標準偏差。
下面是我的資料框架串列中的一小部分
。list(Fe = structure(list(Sample_No = c(80606, 80606, 80606。 80606, 80606,
80606, 80769, 80769, 80769, 80769, 80769, 80850。 80850, 80850, 80850,
80850, 80850, 80947。 80947, 80947, 80947, 80947。 81089, 81089,
81089, 81089, 81089。 81753, 81753。 81753, 81753。
80601, 80601,。 80601, 81001, 81001, 81001。 81001, 81001, 81001,
81493, 81493, 81493。 81493, 81493。 81760, 81760。 81760, 81760, 81760,
81760)。 Rep_No = c(1, 2, 3。 4, 5。 1, 2。 3, 4, 5。 1, 2。
5, 1, 2。 3, 4, 5, 1, 2。 3, 4, 5。 1, 2。 3, 4, 5, 1, 2, 3, 4, 5, 5, ,
1, 2, 3。 4, 5。 1, 2。 3, 4。 5,/span> 1, 2,/span> 3。 4, 5)。 結果= c(53. 83,.
53.89, 53.87, 53. 95, 54.04, 54. 11, 54, 53.98, 54。 02, 53.99, 54.08,
54.04, 54.07, 54. 14, 54.13, 54. 19, 54.05, 54. 04, 54.04, 54.07,
54.14, 54.07, 54. 08, 54.14, 54. 09, 54.12, 54. 07, 54.04, 54.03,
54.12, 54.06, 54. 17, 54.06, 54. 09, 54.11, 54. 13, 54.02, 54.22,
54.08, 54.04, 54. 05, 54.06, 54. 17, 54, 54. 05, 54.03, 54.09,
54.14, 54. 02)), class = "data. frame",行。 names = c(NA。 -50L)),
SiO2 =結構(list(Sample_No = c(80606。 80606, 80606, 80606,
80606, 80606, 80769。 80769, 80769。 80769, 80769。 80850, 80850, 80850,
80850, 80850,。 80947, 80947。 80947, 80947,
81089, 81089, 81089。 81089, 81753。 81753, 81753。 81753, 81753, 81753,
80601, 80601, 80601。 80601, 80601, 81001, 81001。 81001, 81001, 81001,
81001, 81493, 81493。 81493, 81493。 81493, 81760。 81760, 81760, 81760,
81760, 81760)。 Rep_No = c(1, 2, 3。 4, 5。 1, 2。 3, 4。 5, 1,
2, 3, 4。 5,/span> 1。 2,/span> 3。 4, 5, 1。 2,/span> 3。 4, 5, 1。 2,/span> 3。 4, 5, 5, ,
1, 2, 3。 4, 5。 1, 2。 3, 4, 5。 1, 2。 3, 4, 5。 1, 2。
5)。 結果= c(11. 82, 11. 76, 11.79, 11. 71, 11.64, 11.63,
11.67, 11.71, 11. 73, 11.78, 11. 63, 11.62, 11. 67, 11.66, 11.68,
11.65, 11.68, 11. 68, 11.69, 11. 65, 11.62, 11. 61, 11.61, 11.57,
11.61, 11.63, 11. 67, 11.67, 11. 68, 11.6, 11. 61, 11.57, 11.66,
11.64, 11.61, 11. 58, 11.63, 11. 53, 11.59, 11. 64, 11.69, 11.68,
11.64, 11. 72, 11.64, 11. 68, 11.62, 11.69, 11. 62, 11. 69)), class = "data. frame",行。 names = c(NA,)
-50L))。 Al2O3 =結構(list(Sample_No = c(80606。 80606,
80606, 80606,, 80769, 80769。 80769, 80769。 80769, 80850, , 8080,
80850, 80850,。 80850, 80947。 80947, 80947, 80947, 80947, 81089, 81089, 81089。 81089, 81089。 81753, 81753。 81753, 81753, 81753,
81753, 80601, 80601。 80601, 80601, 80601, 81001。 81001, 81001, 81001,
81001, 81001, 81493。 81493, 81493。 81493, 81493。 81760, 81760, 81760,
81760, 81760。 81760)。 Rep_No = c(1, 2, 3。 4, 5。 1, 2, 3,
4, 5, 1。 2,/span> 3, 4, 5。 1, 2, 3。 4, 5。 1, 2, 3。 4, 5。 1, 2,
3, 4, 5。 1, 2。 3, 4。 5, 1, 2。 3, 4。 5, 1, 2。 3, 4。 5, 1,
2, 3, 4。 5)。 結果= c(2。 73, 2.74, 2.72, 2. 71, 2.71, 2.7,
2.68, 2.71, 2. 7, 2.69, 2.71, 2. 7, 2.69, 2. 71, 2.7, 2.68,
2.69, 2.69, 2. 69, 2.68, 2.69, 2. 69, 2.69, 2. 69, 2.69, 2.69, 2.69 ,
2.71, 2.7, 2. 7, 2.7, 2.71, 2. 69, 2.7, 2.72, 2. 71, 2.71, 2.71, 2.71 ,
2.68, 2.71, 2. 69, 2.72, 2. 71, 2.71, 2. 7, 2.7, 2.7, 2.7 2.7, 2.7, 2.68, 2. 71)), class = "data. frame",行。 names = c(NA,)
-50L)))
我有以下代碼,在一個單一的資料框架上作業
df < - df_list[["Fe"]]
df_sd < - lapply(aggregate(df$Result。 list(df$Sample_No)/span>。 FUN=mean),sd)
這對一個單一的資料框架產生了預期的結果
我已經嘗試了df_list_sd < - lapply(aggregate(df_list$Result。 list(df_list$Sample_No)/span>。 FUN=mean),sd)
df_list_sd < - lapply(lapply(df_list。 function(x) {聚合(結果~ sample_No。 資料= x。 平均) }))。 x sd)
但是我得到以下錯誤資訊 錯誤:在 "lapply(lapply(df_list, function(x) {aggregate(Result ~ Sample_No, data = x, mean) }))中出現了意想不到的',',"
我不太確定如何修正語法/代碼
uj5u.com熱心網友回復:
我們可以使用匿名函式
out < - lapply(df_list, function(dat)
aggregate(Result ~ Sample_No。 FUN = mean, data = dat))
輸出
out
$Fe
樣本_No 結果
1 80601 54.098
2 80606 53.916[/span
3 80769 54.020[/span
4 80850 54.092[/span
5 80947 54.078[/span
6 81001 54.098[/span].
7 81089 54.104[/span
8 81493 54.068[/span
9 81753 54.076[/span].
10 81760 54.066[/span].
$SiO2
樣品_編號結果
1 80601 11.618
2 80606 11.744[/span
3 80769 11.704[/span
4 80850 11.652[/span
5 80947 11.670[/span].
6 81001 11.594[/span].
7 81089 11.604[/span].
8 81493 11.674[/span].
9 81753 11.650[/span].
10 81760 11.660[/span].
$Al2O3
樣品_編號結果
1 80601 2.706
2 80606 2.722[/span
3 80769 2.696[/span
4 80850 2.702[/span
5 80947 2.686[/span
6 81001 2.700[/span
7 81089 2.690[/span
8 81493 2.710[/span
9 81753 2.700[/span
10 81760 2.698[/span
要找到'結果'的sd
sapply(out, function(x) sd(x$Result))
Fe SiO2 Al2O3
0.05660624 0.04548260 0.01016530[/span
或者使用tidyverse
library(dplyr)
library(purrr)
map_dbl(df_list, ~ .x %>%.
group_by(Sample_No) %>%
summarise(Result = mean(Result), . groups = 'drop') %>% 。
summarise(sd = sd(Result)) %> %
拉(sd))
Fe SiO2 Al2O3
0.05660624 0.04548260 0.01016530[/span
uj5u.com熱心網友回復:
library(tidyverse)
df_list %>%。
bind_rows(.id = 'group') %>%
group_by(group, Sample_No) %>%
summarise(res = mean(Result), . groups = 'drop_last') %>% 。
summarise(res =sd(res), . groups = 'drop') .
# A tibble: 3 x 2
組別res
<chr> <Dbl>
1 Al2O30.0102
2 鐵 0.0566
3 SiO2 0.0455[/span
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/322169.html
標籤:
