如何用与R中的另一列相对应的已经存在的值填充列的一部分?

问题描述

我正在处理一些飞行轨迹的一些清洁数据,并且'callsign'是我必须填写的必填字段。

Section of the csv I am working with

我正在使用的数据几乎有300000行,这个空白的呼号非常重复。我有什么办法可以根据它们对应的icao24标识号填写这些呼号?

我尝试使用tapply()函数根据其icao24编号分割数据并将函数应用于每个块。

tapply(myDF$callsign,myDF$icao24,...)

但是我似乎无法理解我将对每个部分应用什么“功能”,因为它们的名称不同。我是否需要对每个部分使用某种循环,并在每个部分上应用tapply()?

解决方法

如果值是空白(""),则将group {by'icao24'和replace的元素与""的{​​{1}}元素设为非空白'呼号'

first

将空白转换为library(dplyr) df2 <- df1%>% group_by(icao24) %>% mutate(callsign = replace(callsign,callsign == "",first(callsign[callsign != ""])))

后,另一个选项是fill
NA