我有一个包含以下字符串的列:
1997.2
1998.3
2000.1
2003.3
2008.4
我想用.
字母替换每个句点q
。
如何在R或Stata中执行此操作?
答案 0 :(得分:2)
在R.
考虑您的字符串为x <- c("1997.2", "1998.3", "2000.1", "2003.3","2008.4")
,然后您可以使用gsub
来查找和替换。
> gsub("\\.", "q", x)
[1] "1997q2" "1998q3" "2000q1" "2003q3" "2008q4"
答案 1 :(得分:2)
另一个选项是chartr
R
chartr(".", "q", x)
#[1] "1997q2" "1998q3" "2000q1" "2003q3" "2008q4"
x <- c("1997.2", "1998.3", "2000.1", "2003.3","2008.4")
答案 2 :(得分:2)
正如@ dash2暗示R,你在Stata中使用这样的字符串变量(不是列)会好得多。你需要一个季度日期变量,它在数字上是1960年第一季度的季度数,并按照你的要求格式化。在这里,我只使用季度日期的默认格式。
所有要点都记录在help datetime
:
clear
input str6 yourproblem
1997.2
1998.3
2000.1
2003.3
2008.4
end
gen yoursolution = yq(real(substr(yourprob, 1, 4)), real(substr(yourprob, -1, 1)))
format yoursol %tq
list
+---------------------+
| yourpr~m yourso~n |
|---------------------|
1. | 1997.2 1997q2 |
2. | 1998.3 1998q3 |
3. | 2000.1 2000q1 |
4. | 2003.3 2003q3 |
5. | 2008.4 2008q4 |
+---------------------+
这也有效:
gen alsoworks = quarterly(subinstr(yourprob, ".", " ", .), "YQ")
format alsoworks %tq
答案 3 :(得分:1)
在Stata中,您可以使用subinstr()
函数替换。
对于您的情况,您可以使用以下内容:
replace X = subinstr(X, ".", "q", .)
此处,X
是您的字符串变量。通过在Stata中输入subinstr()
,了解Stata帮助中的help subinstr()
答案 4 :(得分:1)
Stata的日期时间变量是带有特殊格式标签的整数,因此它们是可读的(例如,零是1960q1,一个是1960q2,依此类推)。这允许您使用时间序列命令,运算符和计算持续时间。我建议你把你的字符串转换成第一季度。如果您仍希望将数据保存为字符串,则第二种方法应该有效:
clear
input str8 str_yq
1997.2
1998.3
2000.1
2003.3
2008.4
end
gen yq = quarterly(str_yq,"YQ")
format yq %tq
gen yq2 = subinstr(str_yq,".","q",1)
答案 5 :(得分:1)
我认为这个帖子中提供的答案很好地涵盖了这个主题。
除了@Nick和@Dimitriy的出色回应,我想
仅使用substr()
函数演示Stata中的相关方法:
clear
input str8 string1
1997.2
1998.3
2000.1
2003.3
2008.4
end
generate string2 = substr(string1, 1, 4) + "q" + substr(string1, 6, 1)
或者,如果你的年份长度在某些情况下没有确定,(比如说你
有97而不是1997)你可以将上面的内容与strpos()
函数结合起来:
generate string3 = substr(string1, 1, strpos(string1, ".")-1) + "q" + ///
substr(string1, strpos(string1, ".")+1, 1)
在这两种情况下,结果都是一样的:
list
+-----------------------------+
| string1 string2 string3 |
|-----------------------------|
1. | 1997.2 1997q2 1997q2 |
2. | 1998.3 1998q3 1998q3 |
3. | 2000.1 2000q1 2000q1 |
4. | 2003.3 2003q3 2003q3 |
5. | 2008.4 2008q4 2008q4 |
+-----------------------------+
请注意,我的解决方案仅用于 paedagogical ,我还强烈建议您使用创建数字变量的方法。