我正在使用R中的地址数据。我提供了一个示例 Dataframe (随意切换到tibble或数据表)。我正在尝试对地址进行重新排序,例如,如果数据中有像10-12 smith st这样的地址,我想将所有出现的10 smith street和12 smith street替换为10-12 smith street。当然,应该不会改变到12 park ave,因为这是一个不同的地址。建筑物编号在'blg_no'列中,街道名称在'street'列中。下面是一个例子。
data = data.frame(matrix(nrow=10,ncol=2))
colnames(data) = c('street','blg_no')
data$street = c('smith st','smith st','smith st','smith st','smith st','park ave','park
ave','park ave','george lane','george lane')
data$blg_no = c('10','10-12','36','12','13-15','27','12','27-29','34-38','15')
> data
street blg_no
1 smith 10
2 smith 10-12
3 smith 36
4 smith 12
5 smith 13-15
6 park 27
7 park 12
8 park 27-29
9 george 34-38
10 george 15
字符串
预期输出为:
> data
street blg_no
1 smith 10-12
2 smith 10-12
3 smith 36
4 smith 10-12
5 smith 13-15
6 park 27-29
7 park 12
8 park 27-29
9 george 34-38
10 george 15
型
在Python上使用列表解析似乎是可行的,但我找不到在R上这样做的方法。
2条答案
按热度按时间pkwftd7m1#
字符串
tcomlyy62#
下面是另一种方法,使用tidyverse
步骤:
1.加载库
1.取出第一个数字和最后一个数字(如果每行都有数字,则保存此临时字符串为
d
1.左连接这个字符串与其自身的一个版本,其中只有具有范围的行,在具有相同街道名称的范围df中的一行上连接,并且范围包括行中的第一个数字。
1.创建最后一个
blg_no
列-对于没有范围匹配的行,只需返回值。否则,返回范围。字符串
输出量:
型