2016-09-15 3 views
1

データフレームがあり、特定の場所にスペースを挿入します。ここでは、データの一例である:文字列内の特定の場所にスペースを挿入します。

0MHOCAN000006026421HOCAN000000392457HOCAN000005311227 
0FHOUSA000002272874HOUSA000002272874HOUSA000050206641 
0MHOUSA000002272874HOUSA000002076121HOUSA000014569699 

そして、ここでは、私が(任意の文字Hの前にスペース)を取得したいものです。

0M HOCAN000006026421 HOCAN000000392457 HOCAN000005311227 
0F HOUSA000002272874 HOUSA000002272874 HOUSA000050206641 
0M HOUSA000002272874 HOUSA000002076121 HOUSA000014569699 
+2

答えを見ると、あなたはファイルからデータを読み込んでいると言わなければなりません。 –

答えて

2

を使用することができますお読みください。

基本機能read.fwf

x1 <- read.fwf("temp.txt", 
       widths = c(2, 17, 17, 17), 
       col.names = paste0("myColName",1:4), 
       stringsAsFactors = FALSE) 
# check output 
str(x1) 
# 'data.frame': 3 obs. of 4 variables: 
# $ myColName1: chr "0M" "0F" "0M" 
# $ myColName2: chr "HOCAN000006026421" "HOUSA000002272874" "HOUSA000002272874" 
# $ myColName3: chr "HOCAN000000392457" "HOUSA000002272874" "HOUSA000002076121" 
# $ myColName4: chr "HOCAN000005311227" "HOUSA000050206641" "HOUSA000014569699" 
x1 
# myColName1  myColName2  myColName3  myColName4 
# 1   0M HOCAN000006026421 HOCAN000000392457 HOCAN000005311227 
# 2   0F HOUSA000002272874 HOUSA000002272874 HOUSA000050206641 
# 3   0M HOUSA000002272874 HOUSA000002076121 HOUSA000014569699 

使い方をread_fwfreadrパッケージ:

library(readr) 

x2 <- read_fwf("temp.txt", 
       fwf_widths(c(2, 17, 17, 17), 
          col_names = paste0("myColName",1:4))) 
# check output 
str(x2) 
# Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 3 obs. of 4 variables: 
# $ myColName1: chr "0M" "0F" "0M" 
# $ myColName2: chr "HOCAN000006026421" "HOUSA000002272874" "HOUSA000002272874" 
# $ myColName3: chr "HOCAN000000392457" "HOUSA000002272874" "HOUSA000002076121" 
# $ myColName4: chr "HOCAN000005311227" "HOUSA000050206641" "HOUSA000014569699" 
# - attr(*, "spec")=List of 2 
# ..$ cols :List of 4 
# .. ..$ myColName1: list() 
# .. .. ..- attr(*, "class")= chr "collector_character" "collector" 
# .. ..$ myColName2: list() 
# .. .. ..- attr(*, "class")= chr "collector_character" "collector" 
# .. ..$ myColName3: list() 
# .. .. ..- attr(*, "class")= chr "collector_character" "collector" 
# .. ..$ myColName4: list() 
# .. .. ..- attr(*, "class")= chr "collector_character" "collector" 
# ..$ default: list() 
# .. ..- attr(*, "class")= chr "collector_guess" "collector" 
# ..- attr(*, "class")= chr "col_spec" 
x2 
# # A tibble: 3 × 4 
# myColName1  myColName2  myColName3  myColName4 
#  <chr>    <chr>    <chr>    <chr> 
# 1   0M HOCAN000006026421 HOCAN000000392457 HOCAN000005311227 
# 2   0F HOUSA000002272874 HOUSA000002272874 HOUSA000050206641 
# 3   0M HOUSA000002272874 HOUSA000002076121 HOUSA000014569699 

これらのソリューションは、IDは、文字Hで始まらないとIDが複数のHを含めることができる場合であっても、動作するはずです。

5

あなたは、固定文字列置換でgsubを使用することができます。

x <- c("0MHOCAN000006026421HOCAN000000392457HOCAN000005311227", 
"0FHOUSA000002272874HOUSA000002272874HOUSA000050206641", 
"0MHOUSA000002272874HOUSA000002076121HOUSA000014569699") 
gsub("H", " H", x, fixed=TRUE) 

R demo

出力を参照してください。

[1] "0M HOCAN000006026421 HOCAN000000392457 HOCAN000005311227" 
[2] "0F HOUSA000002272874 HOUSA000002272874 HOUSA000050206641" 
[3] "0M HOUSA000002272874 HOUSA000002076121 HOUSA000014569699" 

あなたのデータフレームdf列名がcol1ある場合は、私たちは、固定幅を使用することができます

df$col1 = gsub("H", " H", df$col1, fixed=TRUE) 
関連する問題