【发布时间】:2021-07-03 16:20:38
【问题描述】:
我有一个看起来像这样的数据框(但适用于每个美国县)
| Countyname | Neighbour County | Neighbour State |
|---|---|---|
| Autauga County, AL | Chilton County | AL |
| Autauga County, AL | Dallas County | AL |
| Baldwin County, AL | Escambia County | FL |
| Catron County, NM | Apache County | AZ |
对于所有县,如果相邻县处于同一州,我想用缺失值 NA 替换“邻州”列中的值,如果它处于不同的州,我想保持不变。 IE。我想得到这样的结果:
| Countyname | Neighbour County | Neighbour State |
|---|---|---|
| Autauga County, AL | Chilton County | NA |
| Autauga County, AL | Dallas County | NA |
| Baldwin County, AL | Escambia County | FL |
| Catron County, NM | Apache County | AZ |
我正在考虑遍历每一行,如果“Countyname”列包含“Neighbour State”列中的条目,请将条目替换为 NA(例如,如果“Autauga County, AL”包含“AL”,则为第一行',将 'AL' 替换为 NA)。我该怎么做(或者有没有更有效的方法,因为这感觉很笨重)?
【问题讨论】:
-
考虑对 CountyName 中的最后两个字符进行子串化,并使用
ifelse与 Neighbor State 进行比较。试一试,然后返回具体问题。 -
“我正在考虑循环遍历每一行” - R 是一种矢量化语言,因此它的函数默认执行此操作。
-
我同意@Phil 的观点,循环尤其是 for 循环在 R 中大多是可以避免的,这就是这种语言的美妙之处。
标签: r string if-statement