在R中的数据帧中连接两个字符串变量

时间:2015-04-16 13:07:50

标签: r variables dataframe concatenation

之前已在以下链接中询问过我的问题。但是,如果您阅读Steven Miller在答案上标记的评论,他仍然遇到代码问题(因为在数据框中我没有得到我想要的连接模式)。我也有同样的问题。我该如何解决这个问题?

Concatenating two string variables in r

例如,我有一个看起来像这样的数据框

bankname    bankid  year   quarter totass  cash    bond    loans 
Bank A      1       1881    1 244789  7250    20218   29513 
Bank B      2       1881    3 195755  10243   185151  2800 
Bank C      3       1881    2 107736  13357   177612  NA 
Bank D      4       1881    4 170600  35000   20000   5000 
Bank E      5       1881    3 3200000 351266  314012  NA

这是创建此数据框的代码

bankid <- c( 1, 2,  3,  4,  5)
year<- c( 1881, 1881,   1881,   1881,   1881)
quarter<-c(3,1,1,2,4)
totass  <- c(244789,    195755, 107736, 170600, 32000000)
cash<-c(7250,10243,13357,35000,351266)
bond<-c(20218,185151,177612,20000,314012)
loans<-c(29513,2800,NA,5000,NA)
bankdata<-data.frame(bankid,year,quarter, totass, cash, bond, loans)

如果您使用链接中建议的代码 Concatenating two string variables in r

bankdata$yearquarter <-apply (bankdata,1,function(x) paste0(toString(year),toString(quarter)))

你仍然在数据框中得到这个。

bankdata$yq
# [1] "1881, 1881, 1881, 1881, 18813, 1, 1, 2, 4"

你如何解决这个问题?

> sessionInfo()

R version 3.1.2 (2014-10-31)
Platform: x86_64-w64-mingw32/x64 (64-bit)

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252   
[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C                          
[5] LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
[1] tools_3.1.2

    > conflicts()

[1] "body<-"    "kronecker"

1 个答案:

答案 0 :(得分:1)

如果您提供了更多信息,将会有所帮助。这是一个例子:

df <- data.frame(x=1:26, y=as.factor(LETTERS))
paste(df$x, df$y)
[1] "1 A"  "2 B"  "3 C"  "4 D"  "5 E"...
paste(df$x, df$y, sep="")
[1] "1A"  "2B"  "3C"  "4D"  "5E"...

元素是什么类并不重要,引擎会将它们转换为字符类。

如果这不能解决问题,请提供您的数据样本以获得更多帮助。