我只熟悉R编程的基础知识,不确定如何处理复杂循环。我有一个大的数据框,其中包括地址和邮编列(以及其他变量)。每个列中都有许多NA。地址列对于某些行存在不完整的数据,其中缺少邮政编码或州或只有邮政编码。我的所有数据都来自同一个州。
我需要清理地址数据以便稍后进行地理编码。我不想省略NA行,因为我还将在仅使用邮政编码分析的相同数据框上使用它(当我创建太多类似对象时也会感到困惑)。在我仍然具有相同行的Zipcode值的情况下,我的Address中有很多NA。
我想到的解决方案是:
这是我的尝试。我也试过使用grepl(),但出现了相同的错误。
我遇到了这个错误:the condition has length > 1 and only the first element will be used。它将未修改的df$Address粘贴到新列df$Address_cln中。
在继续删除重复的"MI"之前,我试图先正确编码前3个部分,所以我的代码不包括它。
稍后我会尝试修复拼写错误的条目,因为在帮助我上面的合并循环方面还需要大力支持。 感谢您的帮助!
我需要清理地址数据以便稍后进行地理编码。我不想省略NA行,因为我还将在仅使用邮政编码分析的相同数据框上使用它(当我创建太多类似对象时也会感到困惑)。在我仍然具有相同行的Zipcode值的情况下,我的Address中有很多NA。
我想到的解决方案是:
- 对于df $ Address中的每一行,如果它不是NA
- 并且如果df $ Address不以df $ Zipcode结尾
- 然后将df $ Address与"MI "和df $ Zipcode结合作为新列值
- 删除重复单词(对于仅缺少邮政编码但有州的地址条目)
Address <- c("1234 address", "5678 address, MI", "9012 address, MI 12345", "1111 adrus")
Zipcode <- c("67890", "56780", "12345", "12345")
df <- data.frame(Address, Zipcode)
#example dataframe
Address Zipcode
1234 address 67890
5678 address, MI 56780
9012 address, MI 12345 12345
1111 adrus 12345
这是我的尝试。我也试过使用grepl(),但出现了相同的错误。
for (i in 1:length(df$Address)) {
if(!is.na(df$Address[i])) {
if (!endsWith(df$Address, df$Zipcode)) {
df$Address_cln<- paste(df$Address, df$Zipcode, sep="MI ")
}
else {dataZip$address_cln <- paste(dataZip$Address)
}}}
我遇到了这个错误:the condition has length > 1 and only the first element will be used。它将未修改的df$Address粘贴到新列df$Address_cln中。
在继续删除重复的"MI"之前,我试图先正确编码前3个部分,所以我的代码不包括它。
稍后我会尝试修复拼写错误的条目,因为在帮助我上面的合并循环方面还需要大力支持。 感谢您的帮助!