我希望my.string用14个零替换前14个点region = 2.所有其他点应该保持原样.
df.1 = read.table(text = "
city county state region my.string reg1 reg2
1 1 1 1 123456789012345678901234567890 1 0
1 2 1 1 ...................34567890098 1 0
1 1 2 1 112233..............0099887766 1 0
1 2 2 1 ..............2020202020202020 1 0
1 1 1 2 ..............00.............. 0 1
1 2 1 2 ..............0987654321123456 0 1
1 1 2 2 ..............9999988888777776 0 1
1 2 2 2 ..................555555555555 0 1
", sep = "", header = TRUE, stringsAsFactors = FALSE)
df.1
Run Code Online (Sandbox Code Playgroud)
我不认为这里有这个问题.对不起,如果有的话.对不起,也没有花更多时间寻找解决方案.快速谷歌搜索没有找到答案.我之前在这里问过类似的问题:R:从字符串中删除最后三个点 谢谢你的帮助.
我应该澄清一点,我只想删除字符串最左边的14个连续点.如果一个字符串以一个后跟14个点的数字开头,那么这14个点应该保持原样.
这是怎么my.string看的:
123456789012345678901234567890
...................34567890098
112233..............0099887766
..............2020202020202020
0000000000000000..............
000000000000000987654321123456
000000000000009999988888777776
00000000000000....555555555555
Run Code Online (Sandbox Code Playgroud)
你有没有尝试过:
sub("^\\.{14}", "00000000000000", df.1$my.string )
Run Code Online (Sandbox Code Playgroud)
对于条件替换尝试:
> df.1[ df.1$region ==2, "mystring"] <-
sub("^\\.{14}", "00000000000000", df.1$my.string[ df.1$region==2] )
> df.1
city county state region my.string reg1 reg2
1 1 1 1 1 123456789012345678901234567890 1 0
2 1 2 1 1 ...................34567890098 1 0
3 1 1 2 1 112233..............0099887766 1 0
4 1 2 2 1 ..............2020202020202020 1 0
5 1 1 1 2 ..............00.............. 0 1
6 1 2 1 2 ..............0987654321123456 0 1
7 1 1 2 2 ..............9999988888777776 0 1
8 1 2 2 2 ..................555555555555 0 1
mystring
1 <NA>
2 <NA>
3 <NA>
4 <NA>
5 0000000000000000..............
6 000000000000000987654321123456
7 000000000000009999988888777776
8 00000000000000....555555555555
Run Code Online (Sandbox Code Playgroud)