【问题标题】:SPSS string extractionSPSS字符串提取
【发布时间】:2016-04-07 07:08:47
【问题描述】:

我有一列用逗号分隔不同人的姓名,例如,(全部在 1 个单元格中)Ben Lee、Paul Loy、Boy Lim。我想将每个名称分成不同的列。我将如何做? (在 SPSS 语法中)。

【问题讨论】:

  • 目前正在试验 char.index 和 char.substr,还没有成功

标签: string spss text-extraction


【解决方案1】:

请参阅this thread 以及潜在的解决方案。即,归功于 David Marso 和 Jon Peck:

 * General Parser *. 
DATA LIST / X 1-80 (A). 
BEGIN DATA 11-0101-423-7384 
END DATA. 

VECTOR NUMS(10). 
COMPUTE #0=0. 
LOOP. 
COMPUTE #1=INDEX(X,'-'). 
COMPUTE #0=#0+1. 
IF #1>0 NUMS(#0)=NUMBER(SUBSTR(X,1,#1-1),F8). 
COMPUTE X=SUBSTR(X,#1+1). 
END LOOP IF #1=0. 
COMPUTE NUMS(#0)=NUMBER(X,F8). 
MATCH FILES FILE * / DROP X. 
LIST. 

或者一个 python 解决方案:

data list free /x(a13). 
begin data. 
1,13,5,6,99,8 
end data. 
dataset name data. 
begin program. 
def split(v): 
  return v.split(',') 
end program. 

spssinc trans result = v1 to v6 
/formula "split(x)". 

【讨论】:

    【解决方案2】:
    do repeat TXTname="Ben Lee" "Paul Loy" "Boy Lim"/VRname=BenLee PaulLoy BoyLim.
    compute VRname=index(OriginalColumnName, TXTname)>0.
    end repeat.
    

    如果有更多名称,您可能更喜欢使用标准变量名称,并在标签中添加实际名称:

    do repeat TXTname="Ben Lee" "Paul Loy" "Boy Lim"/VRname=Name01 to Name03.
    compute VRname=index(OriginalColumnName, TXTname)>0.
    end repeat.
    variable labels 
    Name01 "Ben Lee"
    Name02 "Paul Loy"
    Name03 "Boy Lim".
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-21
      • 2019-10-15
      • 1970-01-01
      相关资源
      最近更新 更多