2014-10-10 61 views
-1

我有數據集零的從字符串字符串分割後失蹤R中

dat 
country  datacode 
Malta  014P100201 
catalonia 014P100202 
RAMANNAGAR 014P100203 
KOLAR  221500955 
MALLUR  221500956 
MADDUR  221500970 
KOPPA  221500955 

我已經使用的代碼做了數據的代碼串分裂:

dat$splitcode=substr(dat$'datacode', 5, 30) 

但輸出如下所示,不符合我的要求。

country  datacode SplitCode 
Malta  014P100201 100201 
catalonia 014P100202 100202 
RAMANNAGAR 014P100203 100203 
KOLAR  221500955  955 
MALLUR  221500956  956 
MADDUR  221500970  970 
KOPPA  221500955  955 

我需要的是當splitstring是在做「221500955」我所要的輸出是00955,而不是955

任何人都可以請幫我在這裏?

+0

檢查「級(DAT $ SplitCode)' - 如果它表示數字,那就是你的問題。數字值不保存前面的零,因爲它們不重要。您應該嘗試使用'as.character'功能來保存您的分割數據,以保存所有前面的字符。 – 2014-10-10 12:46:40

+0

這裏輸出str(dat)。 – rnso 2014-10-10 13:08:48

回答

0

嘗試添加as.character()。但即使沒有它,所有的0來了:

> dat 
    country datacode 
1  Malta 014P100201 
2 catalonia 014P100202 
3 RAMANNAGAR 014P100203 
4  KOLAR 221500955 
5  MALLUR 221500956 
6  MADDUR 221500970 
7  KOPPA 221500955 
> 
> str(dat) 
'data.frame': 7 obs. of 2 variables: 
$ country : Factor w/ 7 levels "catalonia","KOLAR",..: 6 1 7 2 5 4 3 
$ datacode: Factor w/ 6 levels "014P100201","014P100202",..: 1 2 3 4 5 6 4 
> 
> dat$splitcode_ori = substr(dat$'datacode', 5, 30) 
> dat$splitcode = as.character(substr(dat$'datacode', 5, 30)) 
> 
> dat 
    country datacode splitcode_ori splitcode 
1  Malta 014P100201  100201 100201 
2 catalonia 014P100202  100202 100202 
3 RAMANNAGAR 014P100203  100203 100203 
4  KOLAR 221500955   00955  00955 
5  MALLUR 221500956   00956  00956 
6  MADDUR 221500970   00970  00970 
7  KOPPA 221500955   00955  00955 
> 
> str(dat) 
'data.frame': 7 obs. of 4 variables: 
$ country  : Factor w/ 7 levels "catalonia","KOLAR",..: 6 1 7 2 5 4 3 
$ datacode  : Factor w/ 6 levels "014P100201","014P100202",..: 1 2 3 4 5 6 4 
$ splitcode_ori: chr "100201" "100202" "100203" "00955" ... 
$ splitcode : chr "100201" "100202" "100203" "00955" ... 
> 

爲了避免0消失在write.csv,嘗試write.csv(...,報價= TRUE)

+0

感謝您的回覆,但我仍然錯過了那些0的 – user3703195 2014-10-10 12:55:44

+0

0在我的回答上面。你使用as.character()嗎? – rnso 2014-10-10 13:01:22

+1

也許'as.character'應該位於'substr'裏面,比如'substr(as.character(dat $ datacode),5,30)'?很難說,沒有給我們'str(dat)' – konvas 2014-10-10 13:01:33