【发布时间】:2018-12-07 20:49:14
【问题描述】:
我希望能提示使用哪个命令来执行以下操作: 我想计算“名称”列中的城市和“年份”列中每年的人口估计值。 “增长”列提供增长率。所以公式会是这样的:
Population[Lucknow,2030] = Population[Lucknow, 2020] * growth[2030]
等等。跟随df:
df <- data.frame(YEAR=c(2020,2020,2020,2030,2040,2050), NAME=c("Lucknow","Delhi","Hyderadabad",NA,NA,NA), POPULATION=c(3704, 29274,10275,NA,NA,NA), growth=c(1.0,1.0,1.0,1.10,1.18,1.24))
Year Name Population growth
2020 Lucknow 3704 1.0000000
2020 Delhi 29274 1.0000000
2020 Hyderabad 10275 1.0000000
2030 <NA> NA <NA> 1.10
2040 <NA> NA <NA> 1.18
2050 <NA> NA <NA> 1.24
编辑:按照 Dom(谢谢!)在下面写的内容,输入将是:
df <- tibble( year = rep(c(2020,2030,2040,2050), each = 3), city =rep(c("Lucknow","Delhi","Hyderadabad"), times = 4), pop = c(3704, 29274,10275, rep(NA_integer_, times = 9)), growth = rep(c(1.0, 1.10, 1.18, 1.24), each = 3) )
year city pop growth
<dbl> <chr> <dbl> <dbl>
1 2020 Lucknow 3704 1
2 2020 Delhi 29274 1
3 2020 Hyderadabad 10275 1
4 2030 Lucknow NA 1.1
5 2030 Delhi NA 1.1
6 2030 Hyderadabad NA 1.1
7 2040 Lucknow NA 1.18
8 2040 Delhi NA 1.18
9 2040 Hyderadabad NA 1.18
10 2050 Lucknow NA 1.24
11 2050 Delhi NA 1.24
12 2050 Hyderadabad NA 1.24
输出应如下所示:
Year Name Population growth
2020 Lucknow 3704 1.0000000
2020 Delhi 29274 1.0000000
2020 Hyderabad 10275 1.0000000
2030 Lucknow 4074.4 1.1000000
2030 Delhi 32201.4 1.1000000
2030 Hyderabad 11302.5 1.1000000
....
如何在tibble中填写NAs?
我对 merge 和 dplyr::mutate 进行了各种尝试,但鉴于这是一个向量操作,我无法确定我需要在这里做什么。我很高兴能找到正确的命令来执行这样的基本操作。
谢谢!
【问题讨论】:
-
我要睡觉了,但你的数据应该是这样的:df
-
我认为这将是一个简单的 group_by 操作,但我一直无法找到简单的解决方案。
-
谢谢你,多姆。我已将您的 tibble 建议包含在原始帖子中。那我该如何填写 NA 值呢? (我的原始数据集要大得多)