【发布时间】:2016-06-07 16:08:48
【问题描述】:
我有一个大型数据集存储在一个长数据框中。我想提取一些变量的数据并使用公式生成新数据。应从公式中提取所有必要的信息。首先,我想使用公式中的信息来过滤数据集以查找相应的变量——我为此使用了all.vars() 函数。我还依赖于 CRAN 上的 formula.tools 包。它用于轻松提取等式的左侧和右侧(分别为lhs和rhs)。
library(dplyr)
library(reshape2)
library(formula.tools)
set.seed(100)
the_data <- data.frame(country = c(rep("USA", 9), rep("DEU", 9), rep("CHN", 9)),
year = c(2000, 2010, 2020),
variable = c(rep("GDP", 3), rep("Population", 3), rep("Consumption", 3)),
value = rnorm(27, 100, 100))
add_variable <- function(df, equation){
df <- filter(df, variable %in% all.vars(equation))
df <- dcast(df, country + year ~ variable)
df <- mutate_(df, rhs(equation))
# code to keep only the newly generated column
# ...
df <- melt(df, id.vars = c("country", "year"))
}
result <- add_variable(the_data, GDPpC ~ GDP / Population)
新生成的列应命名为GDPpC,目前为GDP/Population。如何改进?在最后一步中,我还想过滤数据,以便结果中只包含新生成的数据,然后可以通过rbind 将其附加到源数据帧。
【问题讨论】:
-
很难说出你的问题是什么
-
谢谢,你是对的。我已经尝试过改进。