【发布时间】:2020-07-24 13:50:15
【问题描述】:
我有一个包含三列的数据框:ID、年份、增长。最后一个包含每年以毫米为单位的增长数据。
例子:
df <- data.frame(ID=rep(c("CHC01", "CHC02", "CHC03"), each=6),
year=rep(2013:2018, 3),
growth=c(NA, NA, NA, 2.3, 2.1, 3.0, NA, NA, NA, NA, 1.1, 4.8, 1.0, 3.2, 4.2, 2.3, 2.1, 1.2))
在另一个数据框中,我还有其他三列:ID、missing_length、missing_years。缺失长度与测量中缺失的估计长度有关。缺失年数与 df
中的缺失年数有关estimate <- data.frame(ID=c("CHC01", "CHC02", "CHC03"),
missing_length=c(1.0, 4.4, 0),
missing_years=c(1,3,0))
为了计算每个缺失年份的增长,我尝试了:
missing <- rep(estimate$missing_length / estimate$missing_years, estimate$missing_years)
需要注意的是,并非所有来自 df 的 NA 都会被估计值替换。
这是我试图获取的数据框的示例:
ID year growth
1 CHC01 2013 NA
2 CHC01 2014 NA
3 CHC01 2015 1.00
4 CHC01 2016 2.30
5 CHC01 2017 2.10
6 CHC01 2018 3.00
7 CHC02 2013 NA
8 CHC02 2014 1.47
9 CHC02 2015 1.47
10 CHC02 2016 1.47
11 CHC02 2017 1.10
12 CHC02 2018 4.80
13 CHC03 2013 1.00
14 CHC03 2014 3.20
15 CHC03 2015 4.20
16 CHC03 2016 2.30
17 CHC03 2017 2.10
18 CHC03 2018 1.20
有没有人知道如何处理这个问题?
非常感谢!
【问题讨论】:
-
嗨 Isabela,欢迎来到 Stack Overflow,您想用来填写
df的逻辑不清楚。请用文字和提供预期的输出来澄清。 -
@IanCampbell 刚刚在问题末尾添加了一个示例。感谢您的建议!
-
@akrun 我一直在尝试解决,我认为他们只需要匹配这些值的估计 df:
structure(list(ID = structure(c(1L, 2L, 2L, 2L), .Label = c("CHC01", "CHC02", "CHC03"), class = "factor"), missing_length = c(1, 4.4, 4.4, 4.4), missing_years = c(1, 3, 3, 3)), row.names = c("1", "2", "2.1", "2.2"), class = "data.frame")
标签: r dataframe vector dplyr na