0
我有成千上万的.csv
文件由年和它看起来像这样HS的信息:如何在R中一次对每个数据帧执行聚合?
Year HS
1956 1.06
1956 1.07
....
2012 0.95
每个CSV文件代表不同的位置。 我应该做的是:
- 查找到的最大HS每年对每个文件
- 创造数千个独立
.csv
文件,这1
这样抱点的信息,基本上我重复每个文件都有相同的任务。
但是,在输入所有文件到名为df1,df2,df3...
的数据帧后,我坚持为每个数据帧执行aggregate
(无法循环数据帧)。我不知道如何 '称之为' 数据帧:
temp = list.files(pattern="*.csv")
for (i in 1:length(temp)) {
assign(paste0("df",i),
read.table(temp[i],header=TRUE,sep=";"))
}
for (i in 1:length(temp))
{
assign(paste0("ag",i),
aggregate(HS~Year,data=df(i),max))
}
我使用这些脚本,并将其显示:
Error in df[i] : object of type 'closure' is not subsettable
然后我更改为:
temp = list.files(pattern="*.csv")
for (i in 1:length(temp)) {
assign(paste0("df",i),
read.table(temp[i],header=TRUE,sep=";"))
}
for (i in 1:length(temp))
{
assign(paste0("ag",i),
aggregate(HS~Year,data=df(i),max))
}
它显示:
Error in df(i) : argument "df1" is missing, with no default
我尝试使用数据列表(alt霍夫我还没有真正理解)和写这个剧本:
temp = list.files(pattern="*.csv")
for (i in 1:length(temp)) {
assign(paste0("df",i),
read.table(temp[i],header=TRUE,sep=";"))
}
dfl=mget(ls(pattern="df[1-length(temp)]"))
for (i in 1:length(dfl)){
assign(paste0("ag",i),
aggregate(HS~Year,data=dfl[i],max))
}
但它不工作,并显示:
Error in eval(predvars, data, env) : object 'HS' not found
我不认为有一个与输入的任何问题,因为它是当我执行aggregate
和write.csv
到单个数据帧(没有循环)时工作。 有没有对这个问题的建议?
谢谢。
无论如何,我是新来的R.喜欢......字面上新的,不到30小时hahaha。所以,我意识到我可能正在编写低效的脚本。如果有人也想提出更好的剧本,我会很高兴。
它说: '错误FUN(X [我] ,...): 只在数据帧中定义了所有数字变量# 老实说,'read.csv'似乎对我的数据不起作用。以前我用'read'输入我的csv文件。csv',它存储到1个变量,即使对于单个数据帧,我也无法执行聚合。 – Yosinta
在代码中的read.table命令可以工作的前提下,我已将其更改为read.table。 –
非常感谢!它完美的工作〜 – Yosinta