【发布时间】:2016-08-03 18:09:58
【问题描述】:
已经提出了类似的问题,但没有一个能够解决我的具体问题。我有一个.R 文件(“Mycalculus.R”),其中包含许多我需要应用于数据框子集的基本微积分:每年的一个子集,其中“年”的模态是因子(yearA、yearB、yearC)不是数值。该文件生成一个新的数据框,我需要将其保存在 Rda 文件中。这是我希望代码看起来像 for 循环(这个显然不起作用):
id <- identif(unlist(df$year))
for (i in 1:length(id)){
data <- subset(df, year == id[i])
source ("Mycalculus.R", echo=TRUE)
save(content_df1,file="myresults.Rda")
}
这是主要 data.frame df 的确切内容:
obs year income gender ageclass weight
1 yearA 1000 F 1 10
2 yearA 1200 M 2 25
3 yearB 1400 M 2 5
4 yearB 1350 M 1 11
源文件“Mycalculus.R”的作用如下:它将大量基本微积分应用于数据帧的“数据”列,并基于 df1 创建两个新数据帧 df1 和 df2。以下是摘录:
data <- data %>%
group_by(gender) %>%
mutate(Income_gender = weighted.mean(income, weight))
data <- data %>%
group_by(ageclass) %>%
mutate(Income_ageclass = weighted.mean(income, weight))
library(GiniWegNeg)
gini=c(Gini_RSV(data$Income_gender, weight), Gini_RSV(data$Income_ageclass,weight))
df1=data.frame(gini)
colnames(df1) <- c("Income_gender","Income_ageclass")
rownames(df1) <- c("content_df1")
df2=(1/5)*df1$Income_gender+df2$Income_ageclass
colnames(df2) <- c("myresult")
rownames(df2) <- c("content_df2")
所以最后,我得到两个这样的数据框:
Income_Gender Income_Ageclass
content_df1 .... ....
对于 df2:
myresult
content_df2 ....
但我需要将 df1 和 Rf2 保存为 Rda 文件,其中 content_df1 和 content_df2 的行名按子集给出,如下所示:
Income_Gender Income_Ageclass
content_df1_yearA .... ....
content_df1_yearB .... ....
content_df1_yearC .... ....
和
myresult
content_df2_yearA ....
content_df2_yearB ....
content_df2_yearC ....
目前,我的程序没有使用任何循环并且正在完成这项工作,但很混乱。基本上代码是2500多行代码。 (请不要向我扔西红柿)。
任何人都可以帮助我解决这个特定的请求吗? 提前谢谢你。
【问题讨论】:
-
用一个可重复的例子简单地说明你的问题。提供两个带有 yearA 和 yearB 的简单 data.frame,并在您的示例 Mycalculus.R 文件中执行一个简单的功能。这将使其他人更容易理解您的问题的性质。