2015-04-16 3 views
-4

Вопрос был задан ранее в следующей ссылке. Однако, если вы прочтете комментарий Стивена Миллера, отмеченный ответом, у него все еще возникают проблемы с кодом (потому что в ядре данных я не получаю конкатенированный шаблон, который я хочу). У меня тоже такая же проблема. Как я могу исправить эту проблему?Объединение двух строковых переменных в dataframe в R

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 

Это код, чтобы создать этот dataframe

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))) 

Вы все еще получаете это в dataframe.

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

Возможный дубликат [Объединение двух переменных строки в r] (http://stackoverflow.com/questions/26321702/concatenating-two-string-variables-in-r) – Llopis

+1

Подождите, пока другой вопрос не получит ответ, двойной просить не разрешается/поощряется, если вы не можете полностью ответить на ваши другие сомнения с полной информацией. Что вы пробовали кстати? – Llopis

+0

@ Llopis Я сказал в своем вопросе, что я жду, когда люди ответят на неотвеченный вопрос Стивена Миллера, опубликованный 6 месяцев назад. Я не вижу, чтобы люди отвечали на него в ближайшее время, если я не попрошу еще раз. Если вы прочтете его комментарий, он говорит, что он не работает в его кадре данных. У меня такая же проблема, и я хочу знать почему. –

ответ

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"... 

Это не имеет значения, какой класс элементы являются, двигатель преобразует их в классе символов.

Если это не решит проблему, включите образец данных, чтобы получить дополнительную помощь.

+0

Я отредактировал мой вопрос. Это будет полезно, если вы сможете решить эту проблему. Благодаря! –

+0

paste (bankdata $ year, bankdata $ quarter, sep = ":") Или вы можете выбрать любой разделитель, который вы хотите. Вам не нужно использовать «apply», так как R отлично выполняет векторизованные операции. –

+0

вы все еще получаете [1] "1881, 1881, 1881, 1881, 1881: 3, 1, 1, 2, 4" ..:( –