在r中连接两个字符串变量

时间:2014-10-12 03:54:12

标签: r variables dataframe concatenation

我已经看到很多关于使用paste和paste0来连接r中的两个字符串的讨论。但是,这似乎不适用于两个字符串变量。我有一个如下所示的数据框。

    series_id   year    period  value   footnote_codes
1   LASBS260000000000003            1983    M01 15.1              
2   LASBS260000000000003            1983    M02 15.0              
3   LASBS260000000000003            1983    M03 14.8              
4   LASBS260000000000003            1983    M04 14.6

我希望将year变量与period变量结合起来,在名为observation的数据框中生成一个新变量。数据框称为数据,我根据类似查询的研究尝试了以下粘贴命令。

data$obs<-paste0(toString(data$year),toString(data$period))
data$obs<-paste(toString(data$year),toString(data$period),sep="")

这并没有像我们预期的那样给我预期的值“1983M01”的单变量。任何想法都将不胜感激。

史蒂夫

2 个答案:

答案 0 :(得分:1)

我遇到了上面提到的问题:我想将“year”(数字)与字符串变量连接起来。作为解决方案,我使用“as.character”而不是“toString”,然后使用“paste0”连接变量。这对我有用。例如,

df$c<-paste0(as.character(df$a)," ", as.character(df$b))

我知道这是一个老帖子。希望这能帮助处于类似情况的其他用户。

答案 1 :(得分:-1)

以下作品:

> apply(ddf,1 ,function(x) paste0(toString(x[2]), toString(x[3])))
[1] "1983M01" "1983M02" "1983M03" "1983M04"
> 
> apply(ddf,1 ,function(x) paste(toString(x[2]), toString(x[3])))
[1] "1983 M01" "1983 M02" "1983 M03" "1983 M04"

toString(ddf $ year)将整个列绑定在一个字符串中:

> toString(ddf$year)
[1] "1983, 1983, 1983, 1983"
> 
> toString(ddf$period)
[1] "M01, M02, M03, M04"
> 
> paste(toString(ddf$year), toString(ddf$period))
[1] "1983, 1983, 1983, 1983 M01, M02, M03, M04"