【发布时间】:2019-06-08 07:27:58
【问题描述】:
我写了一个函数来计算每天住院人数,但是当数字在某些天数为 0 时它就无法工作。 我的功能:
tsdata2 <- function(df){
t.f <- as.data.frame(table(df$DATE_INHOSPITAL2)) %>% rename(whole =Freq)
## sex
man.d <- df %>% filter(GENDER == 1)
man.f <- as.data.frame(table(man.d$DATE_INHOSPITAL2)) %>% rename(man =Freq)
woman.d <- df %>% filter(GENDER == 2)
woman.f <- as.data.frame(table(woman.d$DATE_INHOSPITAL2)) %>% rename(woman =Freq)
## age 65
agelo65.d <- df %>% filter(age_group65 == 1)
agelo65.f <- as.data.frame(table(agelo65.d$DATE_INHOSPITAL2)) %>% rename(agelo65 =Freq)
ageup65.d <- df %>% filter(age_group65 == 2)
ageup65.f <- as.data.frame(table(ageup65.d$DATE_INHOSPITAL2)) %>% rename(ageupwith65 =Freq)
## age 10
age10.1.d <- df %>% filter(age_group10 == 1)
age10.1.d.f <- as.data.frame(table(age10.1.d$DATE_INHOSPITAL2)) %>% rename(agelo40 =Freq)
age10.2.d <- df %>% filter(age_group10 == 2)
age10.2.d.f <- as.data.frame(table(age10.2.d$DATE_INHOSPITAL2)) %>% rename(age41_50 =Freq)
age10.3.d <- df %>% filter(age_group10 == 3)
age10.3.d.f <- as.data.frame(table(age10.3.d$DATE_INHOSPITAL2)) %>% rename(age51_60 =Freq)
age10.4.d <- df %>% filter(age_group10 == 4)
age10.4.d.f <- as.data.frame(table(age10.4.d$DATE_INHOSPITAL2)) %>% rename(age61_70 =Freq)
age10.5.d <- df %>% filter(age_group10 == 5)
age10.5.d.f <- as.data.frame(table(age10.5.d$DATE_INHOSPITAL2)) %>% rename(age71_80 =Freq)
age10.6.d <- df %>% filter(age_group10 == 6)
age10.6.d.f <- as.data.frame(table(age10.6.d$DATE_INHOSPITAL2)) %>% rename(ageup80 =Freq)
datebreaks<-seq(as.Date("2014-01-01"),as.Date("2018-12-31"),by="1 day")
full <- data.frame(Var1 = as.character(datebreaks) )
result <- full %>%
left_join(t.f) %>%
left_join(man.f) %>%
left_join(woman.f) %>%
left_join(agelo65.f) %>%
left_join(ageup65.f) %>%
left_join(age10.1.d.f) %>%
left_join(age10.2.d.f) %>%
left_join(age10.3.d.f) %>%
left_join(age10.4.d.f) %>%
left_join(age10.5.d.f) %>%
left_join(age10.6.d.f) %>% replace(., is.na(.), 0)
return(result)
}
list <- split(total,total$DISEASE_CODE1_2to3)
test <- map(list,tsdata2)
我认为错误是因为某一天的住院人数为零。
如何改进此代码,即使数字为零也可以工作。
test <- map(list,tsdata2)
Joining, by = "Var1"
Joining, by = "Var1"
Joining, by = "Var1"
Joining, by = "Var1"
Joining, by = "Var1"
Joining, by = "Var1"
Error: `by` required, because the data sources have no common variables
【问题讨论】:
-
这是一些可怕的代码,其中包含许多应以编程方式处理的重复操作。如果您要提供最少的样本数据和预期的输出,那将非常有帮助。这对我来说似乎是XY problem,而且很可能有更好的方法来实现你所追求的。但是为了让我们提供具体的帮助,我们需要具体的(最少的)样本数据。