我有一个相当大的数据集,其中有多个缺失值和重复值。我的第一个目标是创建一个由三个现有列组成的新列 (Name
),例如FirstName
、MiddleInitial
和 LastName
。
我试过:
owners4$Name <- paste(owners4$FirstName, owners4$MiddleInitial, owners4$LastName)
但这会导致 NA
被粘贴为字符,而不仅仅是 NA。
在此之后,我将删除新列中具有 NA
的每一行。
有人确定我可以实现这一目标的方法吗?
使用 na.omit 粘贴列,参见示例:
# reproducible example
owners4 <- data.frame(FirstName = c("Aa", "Bb", NA),
MiddleInitial = c("T", "U", NA),
LastName = c(NA, "Yyy", NA))
owners4$Name <- apply(owners4[, c("FirstName", "MiddleInitial", "LastName")], 1,
function(i){ paste(na.omit(i), collapse = " ") })
owners4
# FirstName MiddleInitial LastName Name
# 1 Aa T <NA> Aa T
# 2 Bb U Yyy Bb U Yyy
# 3 <NA> <NA> <NA>
现在过滤掉名称为空的行
result <- owners4[ owners4$Name != "", ]
result
# FirstName MiddleInitial LastName Name
# 1 Aa T <NA> Aa T
# 2 Bb U Yyy Bb U Yyy