R,分析具有大参数 space 的数据集并复制

R, analyzing a data set with a large parameter space and replicates

我进行了 运行 实验,其中我使用参数组合,收集平均力和扭矩(在 x、y 和 z 方向)。我为每个参数组合做了四次复制,总共有 432 个参数组合。

实际的数据集有点太大,无法包含在此处,因此我制作了一个子集用于测试目的并将其与相关的 R 脚本一起上传到 dropbox

这是经过大量解析的版本:

> data2[1:20,1:8]
# A tibble: 20 x 8
   `Foil Color` `Flow Speed (rpm)` `Frequency (Hz)` StepTime Maxpress Minpress `Minpress Percentage`      FxMean
         <fctr>             <fctr>           <fctr>   <fctr>   <fctr>    <int>            <fctr>       <dbl>
 1        Black                  0             0.25      250       50        0                 0 0.014537062
 2        Black                  0             0.25      250       50        0                 0 0.014870256
 3        Black                  0             0.25      250       50        0                 0 0.013180870
 4        Black                  0             0.25      250       50        0                 0 0.013448804
 5        Black                  0             0.25      250       50        3              0.05 0.012996979
 6        Black                  0             0.25      250       50        3              0.05 0.012115166
 7        Black                  0             0.25      250       50        3              0.05 0.012427347
 8        Black                  0             0.25      250       50        3              0.05 0.012561253
 9        Black                  0             0.25      250       50        5               0.1 0.012480644
10        Black                  0             0.25      250       50        5               0.1 0.011603403
11        Black                  0             0.25      250       50        5               0.1 0.011427116
12        Black                  0             0.25      250       50        5               0.1 0.011545803
13        Black                  0             0.25      250       50       13              0.25 0.009891865
14        Black                  0             0.25      250       50       13              0.25 0.008465604
15        Black                  0             0.25      250       50       13              0.25 0.009089619
16        Black                  0             0.25      250       50       13              0.25 0.008560160
17        Black                  0             0.25      250       75        0                 0 0.025101186
18        Black                  0             0.25      250       75        0                 0 0.023611920
19        Black                  0             0.25      250       75        0                 0 0.026276007
20        Black                  0             0.25      250       75        0                 0 0.026593895

我正在尝试按参数组合对数据进行分组,并计算该组 4 个重复的平均 FxMean、sd 和 se。

我尝试遵循教程和其他人们尝试总结数据的示例 (example),但它对我不起作用。它通常吐出一个看起来不像我需要的数组。

例如:

fx_data2 <- ddply(data_csv, c(data_csv$`Frequency (Hz)`,data_csv$`Flow Speed (rpm)`, data_csv$StepTime, data_csv$Maxpress, data_csv$`Minpress Percentage`), summarise,
N    = length(data_csv$FxMean),
mean = mean(data_csv$FxMean),
sd   = sd(data_csv$FxMean),
se   = sd / sqrt(N)

)

fx_data3 <- summaryBy(FxMean ~freq + foilColor+maxP+minPP, data=data_csv, FUN=c(length, mean, sd))

fx_data2 看起来……很糟糕。

head(fx_data2)
....
Foil Color.2530 Foil Color.2531 Foil Length.2512 Foil Length.2513 Foil 
Length.2514 Foil Length.2515 Flow Speed (rpm).2544 Flow Speed (rpm).2545
Flow Speed (rpm).2546 Flow Speed (rpm).2547 Frequency (Hz).800 Frequency 
(Hz).801 Frequency (Hz).802 Frequency (Hz).803 Foil Color.2532 Foil Color.2533
Foil Color.2534 Foil Color.2535 Foil Length.2516 Foil Length.2517 Foil 
Length.2518 Foil Length.2519 Flow Speed (rpm).2548 Flow Speed (rpm).2549
Flow Speed (rpm).2550 Flow Speed (rpm).2551 Frequency (Hz).804 Frequency 
(Hz).805 Frequency (Hz).806 Frequency (Hz).807 Foil Color.2536 Foil Color.2537

我是说。我不知道这是怎么回事。尺寸为 24x8724。只是……什么。

和 fx_data3 看起来像这样:

> fx_data3
  FxMean.length FxMean.mean  FxMean.sd
 1          1744  0.01379712 0.01423244
> 

理想情况下,这些看起来像原始数据集,但每个参数组合都被压缩到一行,最右边的值将是 FxMean、FxStDev 等的均值、sd 和 se . 四个重复。

几天来我一直在为这个问题苦苦挣扎。我将不胜感激一些帮助。

谢谢, 赞恩

你要group_by哪些参数?只需将它们插入下面的代码片段中,代替 param1、param2 等

您可以使用 dplyr:

library(dplyr)

data %>% 
  group_by(param1, param2, param3) %>% 
  summarise(mean = mean(FxMean), 
            sd = sd(FxMean),
            se = sd/n())
url <- "https://www.dropbox.com/sh/vhf39uz4pol7sgl/AAAJ9Fr6OTEIgb_ZeSno-X5ea?dl=1"
download.file(url, destfile = "from-SO-via-dropbox")
unzip("from-SO-via-dropbox")
df <- readr::read_csv("Data_subset.csv")

library(dplyr)

df %>% 
  group_by(`Frequency (Hz)`, `Foil Color`, StepTime, Maxpress, `Minpress Percentage`) %>% 
  summarise_at(vars(FxMean), funs(N = length, mean, sd, se = sd(.) / sqrt(N)))

# # A tibble: 13 x 9
# # Groups:   Frequency (Hz), Foil Color, StepTime, Maxpress [?]
#    `Frequency (Hz)` `Foil Color` StepTime Maxpress `Minpress Percentage`     N        mean           sd           se
#               <dbl>        <chr>    <int>    <int>                 <dbl> <int>       <dbl>        <dbl>        <dbl>
#  1             0.25        Black      250       50                  0.00     4 0.014009248 0.0008206156 0.0004103078
#  2             0.25        Black      250       50                  0.05     4 0.012525186 0.0003658681 0.0001829340
#  3             0.25        Black      250       50                  0.10     4 0.011764241 0.0004832082 0.0002416041
#  4             0.25        Black      250       50                  0.25     4 0.009001812 0.0006538297 0.0003269149
#  5             0.25        Black      250       75                  0.00     4 0.025395752 0.0013514463 0.0006757231
#  6             0.25        Black      250       75                  0.05     4 0.020794212 0.0028703242 0.0014351621
#  7             0.25        Black      250       75                  0.10     4 0.018409500 0.0037305138 0.0018652569
#  8             0.25        Black      250       75                  0.25     4 0.016193536 0.0016200530 0.0008100265
#  9             0.25        Black      250      100                  0.00     4 0.035485324 0.0052513208 0.0026256604
# 10             0.25        Black      250      100                  0.05     4 0.050097709 0.0024123653 0.0012061827
# 11             0.25        Black      250      100                  0.10     4 0.051378181 0.0049857712 0.0024928856
# 12             0.25        Black      250      100                  0.25     4 0.039374874 0.0031421884 0.0015710942
# 13             0.50        Black      250       50                  0.00     2 0.014778494 0.0004683882 0.0003312005