【发布时间】:2018-11-05 18:46:57
【问题描述】:
我有一个包含所有数字变量和一个 date 变量的数据框。对于每个变量VARIABLE,我想使用以下 dplyr 代码创建一个数据框:
avg_price = full_data_noNO %>%
group_by(Month, Country) %>%
dplyr::summarize(avg = mean(VARIABLE, na.rm = TRUE))
如果我对名称 VARIABLE 进行硬编码,这可以正常工作,但如果我在循环中执行此操作,则会收到警告 In mean.default(data.matrix(VARIABLE), na.rm = TRUE) : argument is not numeric or logical: returning NA。因此,我的 avg_price 数据框中的平均列仅包含 NA。有谁知道如何解决这个问题?
更新: 我目前有一个功能:
make_plots_expl_vars <- function (VARIABLE, full_data_noNO ) {
avg_price = full_data_noNO %>%
group_by(Month, Country) %>%
dplyr::summarize(avg = mean(VARIABLE, na.rm = TRUE))
return(avg_price)
我使用例如make_plots_expl_vars("price", full_data_noNO) 调用它。我想使用循环为我的数据框中的所有变量调用此函数,但我知道该怎么做。
【问题讨论】:
-
能否请您显示因此错误而失败的循环代码?帮助您会更容易。
-
如果您要遍历 data.frame 中的所有列(月份/国家除外),您可能会从使用 summarise_if(is.numeric, mean) 或 summarise_all(mean) 中获益