【问题标题】:How to fill NAs by factors in data frame, by ID如何按数据框中的因子填充 NA,按 ID
【发布时间】:2021-04-21 13:30:15
【问题描述】:
我有一个带有列 ID(有 800 多个 ID)的数据框,对应于具有固定地理位置(LAT、LONG)的陷阱。每周检查陷阱,然后我得到捕获的昆虫(femeas)的数量。从 06 月到 2014 年,LAT 和 LONG 列是空的 (NAs)。我不知道如何使用同一 ID 的另一行中的 LAT / LONG 列中的值更新数据库。有人可以帮助我吗?
我试过了:
ddply(data, "ID", na.locf)
但它不起作用。
部分数据:
https://github.com/daniandreza/spatialtemporal.git
【问题讨论】:
标签:
r
dataframe
conditional-statements
missing-data
【解决方案1】:
您可以使用dplyr::group_by 和tidyr::fill:
library(dplyr);library(tidyr)
data %>%
group_by(ID) %>%
fill(LAT:Y,.direction = "updown")
## A tibble: 41 x 9
## Groups: ID [3]
# ID Dia Mes ano FEMEA LAT LONG X Y
# <int> <int> <int> <int> <int> <dbl> <dbl> <dbl> <dbl>
# 1 11 24 4 2014 0 -30.1 -51.2 484034. 6673913.
# 2 11 29 4 2014 1 -30.1 -51.2 484034. 6673913.
# 3 11 7 5 2014 0 -30.1 -51.2 484034. 6673913.
# 4 11 9 1 2014 0 -30.1 -51.2 484034. 6673913.
# 5 11 17 1 2014 1 -30.1 -51.2 484034. 6673913.
# 6 11 21 1 2014 0 -30.1 -51.2 484034. 6673913.
# 7 11 30 1 2014 3 -30.1 -51.2 484034. 6673913.
# 8 11 5 2 2014 0 -30.1 -51.2 484034. 6673913.
# 9 11 13 2 2014 0 -30.1 -51.2 484034. 6673913.
#10 11 21 2 2014 0 -30.1 -51.2 484034. 6673913.
## … with 31 more rows
数据
data <- data.table::fread("https://raw.githubusercontent.com/daniandreza/spatialtemporal/master/Data_MI.csv",dec = ",")
names(data)[3] <- "Mes"
data.table::setDF(data)