Stata 如何删除字符串中除第一个字符以外的所有内容?

Stata 如何删除字符串中除第一个字符以外的所有内容?,stata,Stata,我有一个名、中名和姓的数据集。我将把它与另一个匹配相同变量的数据集合并。 在一个数据集中,变量mi如下所示: Lowell Ann Carl A Fran Allen 我希望它看起来像: L A C A F A 我试过这个: gen mi2 = substr(mi, 2, length(mi)) 但这与我想要的正好相反,但这是我能做的最接近的。我知道这可能是一个很容易的问题,但我现在很为难 使用substr,您的思路是正确的。请参见下面的示例: clear input str10 mi

我有一个名、中名和姓的数据集。我将把它与另一个匹配相同变量的数据集合并。 在一个数据集中,变量
mi
如下所示:

Lowell
Ann
Carl
A
Fran
Allen
我希望它看起来像:

L
A
C
A
F
A
我试过这个:

gen mi2 = substr(mi, 2, length(mi))

但这与我想要的正好相反,但这是我能做的最接近的。我知道这可能是一个很容易的问题,但我现在很为难

使用
substr
,您的思路是正确的。请参见下面的示例:

clear

input str10 mi
Lowell
Ann
Carl
A
Fran
Allen
end

gen mi2 = substr(mi,1,1)
list, sep(0)

     +--------------+
     |     mi   mi2 |
     |--------------|
  1. | Lowell     L |
  2. |    Ann     A |
  3. |   Carl     C |
  4. |      A     A |
  5. |   Fran     F |
  6. |  Allen     A |
     +--------------+

substr
的第二个和第三个参数分别是起始位置和字符数。在本例中,您希望从第一个字符开始,并取一个字符,因此
substr(mi,1,1)
是您所需要的

使用
substr
,您的思路是正确的。请参见下面的示例:

clear

input str10 mi
Lowell
Ann
Carl
A
Fran
Allen
end

gen mi2 = substr(mi,1,1)
list, sep(0)

     +--------------+
     |     mi   mi2 |
     |--------------|
  1. | Lowell     L |
  2. |    Ann     A |
  3. |   Carl     C |
  4. |      A     A |
  5. |   Fran     F |
  6. |  Allen     A |
     +--------------+

substr
的第二个和第三个参数分别是起始位置和字符数。在本例中,您希望从第一个字符开始,并取一个字符,因此
substr(mi,1,1)
是您所需要的

当然!
substr
的帮助文件总是让我感到困惑。感谢您的澄清。请注意,
gen str1 mi1=mi
是一种蛮力替代方案。您坚持使用
str1
作为存储类型,因此只能容纳一个字符。这是事实,同样有效,但我忍不住认为这感觉像是一种粗糙的方法。如果您将语法想象为“我想要一个字符(我知道它将是第一个)”,那么使用
substr()
并不比使用
substr()更尴尬。都在脑子里……当然!
substr
的帮助文件总是让我感到困惑。感谢您的澄清。请注意,
gen str1 mi1=mi
是一种蛮力替代方案。您坚持使用
str1
作为存储类型,因此只能容纳一个字符。这是事实,同样有效,但我忍不住认为这感觉像是一种粗糙的方法。如果您将语法想象为“我想要一个字符(我知道它将是第一个)”,那么使用
substr()
并不比使用
substr()更尴尬。从另一个角度来看,减少到一个字符将使合并更加困难。您自己的示例显示,
A
现在是高度模糊的。@NickCox我想我忘了添加我也在合并出生日期。数据在名字、中间名、姓氏和dob级别是唯一的。理想情况下,我会有一个唯一的ID,但数据并不总是按照您希望的方式来:)。另一方面,减少到一个字符将使合并更加困难。您自己的示例显示,
A
现在是高度模糊的。@NickCox我想我忘了添加我也在合并出生日期。数据在名字、中间名、姓氏和dob级别是唯一的。理想情况下,我会有一个唯一的ID,但数据并不总是按照您希望的方式出现:)。