どのパンフレット、ホームページの先頭と末尾の空白?
-
20-09-2019 - |
質問
私もトラブルを先頭と末尾に空白文字にデータです。フレーム。例えば、うち特定 row
a data.frame
に基づき一定の条件:
> myDummy[myDummy$country == c("Austria"),c(1,2,3:7,19)]
[1] codeHelper country dummyLI dummyLMI dummyUMI
[6] dummyHInonOECD dummyHIOECD dummyOECD
<0 rows> (or 0-length row.names)
私はなぜ無かったのは、予想出力から国オーストリアあたっ data.frame
.後を通して見ている私のコードの歴史とそうとしていることをどのようなチームを作ってみました:
> myDummy[myDummy$country == c("Austria "),c(1,2,3:7,19)]
codeHelper country dummyLI dummyLMI dummyUMI dummyHInonOECD dummyHIOECD
18 AUT Austria 0 0 0 0 1
dummyOECD
18 1
私はラッキーなことに変更し、コマンドを追加空白文字の後のオーストリア
さらに迷惑の問題を明らかにする。例えば、私のように合併の二つのフレームに基づく国です。一つ data.frame
用途 "Austria "
他のフレーム "Austria"
.のマッチングの方法でやらねばならない。
- ある素敵なショーでの空白が自分の画面のように認識している問題なのでしょうか。
- でI削除、先頭または末尾の空白文字R?
これまで使った書簡 Perl
スクリプトを除去する空白文字でコミュニケーションを取り合いでなんだかんだ内R.
解決
おそらく最良の方法は、あなたのデータファイルを読み込むときに、末尾の空白を処理することです。あなたがread.csv
やread.table
を使用する場合は、parameterstrip.white=TRUE
を設定することができます。
あなたが後で文字列をきれいにしたい場合は、これらの機能のいずれかを使用することができます:
# returns string w/o leading whitespace
trim.leading <- function (x) sub("^\\s+", "", x)
# returns string w/o trailing whitespace
trim.trailing <- function (x) sub("\\s+$", "", x)
# returns string w/o leading or trailing whitespace
trim <- function (x) gsub("^\\s+|\\s+$", "", x)
myDummy$country
に、これらの機能のいずれかを使用するには:
myDummy$country <- trim(myDummy$country)
<時間>
あなたが使用することができます。'ショー' に空白ます:
paste(myDummy$country)
見つけること空白が容易になり、あなたに引用符( ")で囲まれた文字列が表示されますされます。
他のヒント
新しい機能を主要/末尾の空白を除去するために導入されたR 3.2.0のように:
trimws()
を参照してください:ます。http:// STAT。 ethz.ch/R-manual/R-patched/library/base/html/trimws.htmlする
は空白を操作するには、stringrパッケージに()str_trimを使用します。 パッケージには、手動の2月15,2013日付とCRANにあるしています。 この関数は、文字列ベクトルを扱うことができます。
install.packages("stringr", dependencies=TRUE)
require(stringr)
example(str_trim)
d4$clean2<-str_trim(d4$V2)
(クレジットはコメント投稿に行く:R.コットン)
簡単の関数の先頭と末尾の空白を削除する
trim <- function( x ) {
gsub("(^[[:space:]]+|[[:space:]]+$)", "", x)
}
の使用方法:の
> text = " foo bar baz 3 "
> trim(text)
[1] "foo bar baz 3"
print.data.frame
空白を表示するには、AD1)
print(head(iris), quote=TRUE)
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# 1 "5.1" "3.5" "1.4" "0.2" "setosa"
# 2 "4.9" "3.0" "1.4" "0.2" "setosa"
# 3 "4.7" "3.2" "1.3" "0.2" "setosa"
# 4 "4.6" "3.1" "1.5" "0.2" "setosa"
# 5 "5.0" "3.6" "1.4" "0.2" "setosa"
# 6 "5.4" "3.9" "1.7" "0.4" "setosa"
また、他のオプションについては?print.data.frame
を参照してください。
それらを取り除くために空白とサブとの観測を見つけるにはgrepやgreplを使用します。
names<-c("Ganga Din\t","Shyam Lal","Bulbul ")
grep("[[:space:]]+$",names)
[1] 1 3
grepl("[[:space:]]+$",names)
[1] TRUE FALSE TRUE
sub("[[:space:]]+$","",names)
[1] "Ganga Din" "Shyam Lal" "Bulbul"
私は独立した答えとして書いuser56が、まだできないためにコメントとして、答えを追加することを好むだろう。
:先頭と末尾の空白を削除するだけでなくGDATAパッケージからトリム()関数によって達成される可能性がありますrequire(gdata)
example(trim)
使用例:
> trim(" Remove leading and trailing blanks ")
[1] "Remove leading and trailing blanks"
別のオプションは、デフォルトstri_trim
パッケージから先頭と末尾の空白を削除するにstringi
機能を使用することです。
> x <- c(" leading space","trailing space ")
> stri_trim(x)
[1] "leading space" "trailing space"
のみの先頭の空白を除去するために、stri_trim_left
を使用しています。唯一の末尾の空白を除去するために、stri_trim_right
を使用しています。あなたが他先頭または末尾の文字を削除したいときは、pattern =
でそれを指定する必要があります。
また、より多くの情報のため?stri_trim
を参照してください。
別の関連の問題が発生します:
> a <- " a string with lots of starting, inter mediate and trailing whitespace "
あなたは、簡単にsplit
引数に正規表現を使用した「本物」のトークンにこの文字列を分割することができます:
> strsplit(a, split=" +")
[[1]]
[1] "" "a" "string" "with" "lots"
[6] "of" "starting," "inter" "mediate" "and"
[11] "trailing" "whitespace"
なおの先頭に一致した場合 (空でない)文字列、出力の最初の要素は、「『』」であるが、 文字列の末尾に一致した場合、出力は 除去試合と同じ。
私は先頭および/または最後の空白トリムするtrim.strings ()
関数を作成します:
# Arguments: x - character vector
# side - side(s) on which to remove whitespace
# default : "both"
# possible values: c("both", "leading", "trailing")
trim.strings <- function(x, side = "both") {
if (is.na(match(side, c("both", "leading", "trailing")))) {
side <- "both"
}
if (side == "leading") {
sub("^\\s+", "", x)
} else {
if (side == "trailing") {
sub("\\s+$", "", x)
} else gsub("^\\s+|\\s+$", "", x)
}
}
説明のために、
a <- c(" ABC123 456 ", " ABC123DEF ")
# returns string without leading and trailing whitespace
trim.strings(a)
# [1] "ABC123 456" "ABC123DEF"
# returns string without leading whitespace
trim.strings(a, side = "leading")
# [1] "ABC123 456 " "ABC123DEF "
# returns string without trailing whitespace
trim.strings(a, side = "trailing")
# [1] " ABC123 456" " ABC123DEF"
最善の方法であるtrimws()
次のコードは、全体のデータフレーム
にこの機能を適用しますの mydataframe < - data.frame(lapply(mydataframe、trimws)、stringsAsFactors = FALSE)の
私はトリムを試してみました()。ホワイトスペースだけでなく、「\ nを」でうまく動作します。 X = '\ Nハーデン、J. \ n'
トリム(X)
myDummy[myDummy$country == "Austria "] <- "Austria"
この後は、レベルとして「オーストリア」を認識しないようにRを強制する必要があります。あなたはまた、レベルとして「USA」と「スペイン」を持っているふりをしてみましょう。
myDummy$country = factor(myDummy$country, levels=c("Austria", "USA", "Spain"))
最高の応答を投票し、それはまだ動作するはずですよります。 少し威圧