从多个.csv文件中抓取列作为R?
我有几个.CSV文件,希望使用每个.CSV文件的最后一列作为ANOVA样本,在R中执行ANOVA测试 举个例子,下面是第一个文件:从多个.csv文件中抓取列作为R?,r,bash,awk,R,Bash,Awk,我有几个.CSV文件,希望使用每个.CSV文件的最后一列作为ANOVA样本,在R中执行ANOVA测试 举个例子,下面是第一个文件: E, Run1, Run2, ..., Runn, Mean 0, 1.48, 1.22, ..., 1.01, 1.24 1, 1.42, 1.12, ..., 1.00, 1.18 2, 1.11, 1.11, ..., 0.98, 1.07 3, 1.00, 0.98, ..., 0.90, 0.96 ..., ..., ..., ..., ..., ...
E, Run1, Run2, ..., Runn, Mean
0, 1.48, 1.22, ..., 1.01, 1.24
1, 1.42, 1.12, ..., 1.00, 1.18
2, 1.11, 1.11, ..., 0.98, 1.07
3, 1.00, 0.98, ..., 0.90, 0.96
..., ..., ..., ..., ..., ...
第二点:
E, Run1, Run2, ..., Runn, Mean
0, 2.11, 2.00, ..., 1.98, 2.03
1, 2.00, 1.99, ..., 1.64, 1.88
2, 1.98, 1.90, ..., 1.60, 1.83
3, 1.90, 1.85, ..., 1.22, 1.66
..., ..., ..., ..., ..., ...
声明性地,我想要每个文件的最后一列,而忽略第一行。所以我可能有sample1=[1.24,1.18,1.07,0.96,…]
,和sample2=[2.03,1.88,1.83,1.66,…]
。然后我可以用这两个样本做方差分析
我的示例使用了两个文件,但如果有一种方法可以处理任意数量的.CSV文件并执行方差分析,那就更好了
我对R不是很熟悉,所以非常感谢您的帮助。我已经标记为
bash
和awk
,因为我不介意使用它们。这是一种方法,数据在手:
库(purrr)
数据1%
lm(数据=,值~样本)%>%anova
输出:
> anova(lm(value~sample, data=d))
Analysis of Variance Table
Response: value
Df Sum Sq Mean Sq F value Pr(>F)
sample 1 1.08781 1.08781 56.424 0.0002881 ***
Residuals 6 0.11567 0.01928
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
要跨多个文件进行概括,请执行以下操作:
库(purrr)
dir(“some/where/”,pattern=“\\.csv$”,full.names=TRUE)%>%
map_df(~read.csv(.x)%%>%select(last_col()),.id=“filename”)%%>%
集合名(c(“文件号”、“值”))%>%
lm(数据=,值~.)%%>%anova