我对 R 非常陌生,并试图弄清楚如何将两个数据集放在一起。 我有一张表格(从 excel 导入),其中包含有关患有某些疾病的人的信息 - 有关出生年份和胎龄的信息,例如第一列中的人数 1 = 1990,第二列中的人数为 40。 在另一组中,我有关于那年有多少具有该胎龄的人出生的信息。所以对于 1990 年、1991 年等,我有关于 37 周、38 周等之后出生的人数的信息。
我想根据胎龄计算疾病的发病率。例如,如果有 8 人在 40 周后出生于 1990 年,而在 1990 年有 5000 人在妊娠 40 周后出生,那么发病率为 8/5000...
关于如何将数据集放在一起以及用于计算类似或类似内容的代码的任何想法或链接?
答案 0 :(得分:0)
这是一个 dplyr 解决方案。
library(dplyr)
dat1 %>%
group_by(disease, gestation) %>%
tally() %>%
left_join(., dat2, by = "gestation") %>%
mutate(occurrence = n/count)
# # A tibble: 510 x 6
# # Groups: disease [10]
# disease gestation n year count occurrence
# <chr> <int> <int> <int> <int> <dbl>
# 1 A 35 12 1965 447 0.0268
# 2 A 35 12 1969 655 0.0183
# 3 A 35 12 1981 930 0.0129
# 4 A 35 12 1983 146 0.0822
# 5 A 35 12 1984 348 0.0345
# 6 A 35 12 1985 553 0.0217
# 7 A 35 12 1987 655 0.0183
# 8 A 35 12 1988 462 0.0260
# 9 A 35 12 1993 11 1.09
# 10 A 35 12 1995 434 0.0276
# # ... with 500 more rows
数据
set.seed(42) # R-4
n <- 1000
dat1 <- data.frame(
people = sample(1000, size=n, replace=TRUE),
born = sample(1960:2010, size=n, replace=TRUE),
disease = sample(LETTERS[1:10], size=n, replace=TRUE),
gestation = sample(35:40, size=n, replace=TRUE)
)
dat2 <- data.frame(
year = 1960:2010,
gestation = sample(35:40, size=51, replace=TRUE),
count = sample(1:1000, size=51, replace=TRUE)
)
head(dat1)
# people born disease gestation
# 1 561 2006 C 36
# 2 997 1973 I 37
# 3 321 1976 J 38
# 4 153 1996 J 38
# 5 74 2008 A 39
# 6 228 1976 B 40
head(dat2)
# year gestation count
# 1 1960 39 385
# 2 1961 38 104
# 3 1962 40 683
# 4 1963 40 770
# 5 1964 36 111
# 6 1965 35 447