h******e 发帖数: 1791 | 1 比如,一个变量string的值为:
1
2
3
_
1
2
3
我只想删除
_
1
2
3
不想删除
1
2
3
有没有办法? |
w*****m 发帖数: 414 | 2 那得看其他信息是啥样的?LZ得多给点数据的例子。 |
S******y 发帖数: 1123 | |
R*********i 发帖数: 7643 | 4 Retain "_" until you see another "1"? Assume the desired sequence of strings
always start with "1", you can delete those with retained "_" before "1". |
h******e 发帖数: 1791 | 5 不会。
【在 S******y 的大作中提到】 : use Python
|
h******e 发帖数: 1791 | 6 我想了个主意,用lag function把column pattern变row pattern。
strings
【在 R*********i 的大作中提到】 : Retain "_" until you see another "1"? Assume the desired sequence of strings : always start with "1", you can delete those with retained "_" before "1".
|
q**j 发帖数: 10612 | 7 出现这种问题,一般都是程序从开头就没设计好。
【在 h******e 的大作中提到】 : 我想了个主意,用lag function把column pattern变row pattern。 : : strings
|
h******e 发帖数: 1791 | 8 多谢了,一下提醒我了,只要把ps放大就不会有这个问题了。
【在 q**j 的大作中提到】 : 出现这种问题,一般都是程序从开头就没设计好。
|
A*******s 发帖数: 3942 | 9 my idea is:
go through the data set one row by one row{
1) output current row if it is not matched
2) if the current row (and the previous rows) seem to match (part of) the
pattern, then stop outputting.
3) if the current row doesn't match but the previous do, go back to output
the previous and the current rows.
}
Codes:
data test;
obs=_N_;
input char $3.;
cards;
2
3
4
1
2
5
8
_
1
2
3
3
5
3
+
4
3
1
2
1
f
g
2
_
1
2
3
1
f
g
e
d
u
_
1
2
3
h
;
%let pattern=_123;
data test2;
retain n_match 0;
drop n_match;
if 0 then set test nobs=nobs;
do i=1 to nobs;
set test point=i;
if char = substr(strip("&pattern"),n_match+1, 1) then do;
n_match=n_match+1;
if n_match=%length(&pattern) then n_match=0;
end;
else do;
do j=i-n_match to i;
set test point=j;
output;
end;
n_match=0;
end;
end;
stop;
run;
【在 h******e 的大作中提到】 : 比如,一个变量string的值为: : 1 : 2 : 3 : _ : 1 : 2 : 3 : 我只想删除 : _
|
B******5 发帖数: 4676 | 10 这用Perl或者Python的regular expression不是可以很容易搞定的? |