我正在使用fingertipsR获取公共卫生数据。
有不同地理级别的指标,这些指标也在个人资料级别分组。
下面是一些代码:
library(fingertipsR)
library(fingertipscharts)
library(tidyverse)
library(ggthemes)
fingertips_stats()
inds<-indicators_unique()
profs<-profiles()可以像这样为配置文件拉出唯一的指示器,然后像这样添加一个列
smoking<-indicators_unique(ProfileID = 18,DomainID = NULL)%>%mutate(prof_id="18")我想做的是:
对于每个唯一的配置文件ID,生成一个指示器的数据帧。有53个独特的配置文件
uniqueprofs<-as_tibble(unique(profs$ProfileID))我怎么才能通过它呢?还是循环?
我经常被这些迭代类型的问题所困扰。
编辑: so。如果您在按住Ctrl键的同时单击indicators_unique,您将看到以下内容:df <- unique(df[, c("IndicatorID", "IndicatorName")])
我复制了所有函数并调用了其他函数
function (ProfileID = NULL, DomainID = NULL, path)
{
if (missing(path))
path <- fingertips_endpoint()
#fingertips_ensure_api_available(endpoint = path)
df <- indicators(ProfileID, DomainID, path = path)
df <- unique(df[, c("IndicatorID", "IndicatorName","ProfileID")])
return(df)
}现在我得到了一个包含ProfileID的数据帧。如果我加上"DomainID“我也可以...
编辑:恼人的是,我问了一个类似的问题,并用dplyr group_by和group_walk更新了它
我可以这样做:
inds%>%group_by(ProfileID)%>%group_walk(~ write.csv(.x, paste0(.y$ProfileID, ".csv")))
我如何group_walk并将数据帧/数据块写入环境,而不是将它们写入驱动器,然后加载它们?
发布于 2019-11-13 20:57:17
从一些最小的初始代码开始
library(fingertipsR)
library(tidyverse)
profs<-profiles()indictators_unique已经矢量化了,所以不需要将ProfileID加载到tibble中,而是将它们放在一个列表中,然后您可以执行简单的
unique_profs <- list(unique(profs$ProfileID))
indicators_unique(ProfileID = unique_profs, DomainID = NULL)问题是添加所需的prof_id列。我对这些包并不熟悉。是否有任何数据框架将ProfileID链接到IndicatorID或IndicatorName,您可以在其上执行join?
https://stackoverflow.com/questions/58835897
复制相似问题