【发布时间】:2023-02-03 14:18:50
【问题描述】:
我正在使用 R 编程语言。
我有以下数据集,其中包含加拿大人的身高和体重 - 使用身高值 (cm),我根据 ntiles 将体重 (kg) 分成 bin,并计算每个 ntile bin 中 var2 的平均值:
library(dplyr)
library(gtools)
set.seed(123)
canada = data.frame(height = rnorm(10000,150,10), weight = rnorm(10000,90, 10))
Part_1 = canada %>%
mutate(quants = quantcut(weight, 100),
rank = as.numeric(quants)) %>%
group_by(quants) %>%
mutate(min = min(weight), max = max(weight), count = n(), avg_height = mean(height))
Part_1 = Part_1 %>% distinct(rank, .keep_all = TRUE)
> Part_1
# A tibble: 100 x 8
# Groups: quants [100]
height weight quants rank min max count avg_height
<dbl> <dbl> <fct> <dbl> <dbl> <dbl> <int> <dbl>
1 144. 114. (110.2,113.9] 99 110. 114. 100 150.
2 148. 88.3 (88.12,88.38] 44 88.1 88.4 100 149.
3 166. 99.3 (99.1,99.52] 83 99.1 99.5 100 152.
4 151. 84.3 (84.14,84.44] 29 84.1 84.4 100 150.
例如,我看到有 100 个人体重在 100.2 - 113.9 公斤之间,这些人的平均身高是 150 厘米
现在,假设我有一个类似的美国人数据集:
set.seed(124)
usa = data.frame(height = rnorm(10000,150,10), weight = rnorm(10000,90, 10))
我的问题:根据我使用加拿大数据集计算的体重范围——我想知道有多少美国人属于这些加拿大范围内,以及美国人在这些加拿大范围内的平均体重是多少
例如:
- 在加拿大的数据集中,我看到有100个人体重在100.2-113.9公斤之间,这些人的平均身高是150厘米
- 有多少美国人的体重介于 100.2 - 113.9 公斤之间,这些美国人的平均身高是多少?
我知道我可以为每个级别手动执行此操作:
americans_in_canadian_rank99 = usa %>%
filter(weight > 110.2 & weight < 113.9) %>%
group_by() %>%
summarize(count = n(), avg_height = mean(height))
americans_in_canadian_rank44 = usa %>%
filter(weight > 88.1 & weight < 88.4) %>%
group_by() %>%
summarize(count = n(), avg_height = mean(height))
最后,我会寻找像这样的所需输出的东西:
# number of rows should be = number of unique ranks
canadian_rank min_weight max_weight canadian_count canadian_avg_height american_count american_avg_height
1 99 110.2 113.9 100 150 116 150
2 44 88.1 88.4 100 149 154 150
有人可以帮我想出更好的方法吗?
谢谢!
【问题讨论】:
标签: r