回答:
これが私がすることの例です。それがあなたが探しているものだといいのですが。
char_array = c("foo_bar","bar_foo","apple","beer")
a = data.frame("data"=char_array,"data2"=1:4)
a$data = substr(a$data,1,nchar(a$data)-3)
aには次のものが含まれるはずです。
data data2
1 foo_ 1
2 bar_ 2
3 ap 3
4 b 4
strptime)に直接アクセスできるより良い答えがあるでしょう。
ここに方法がありgsubます:
cs <- c("foo_bar","bar_foo","apple","beer")
gsub('.{3}$', '', cs)
# [1] "foo_" "bar_" "ap" "b"
gsub('.{5}$', '', 'abcd')。
これは、@ nfmcclureによる回答とほとんど同じですが、stringrパッケージが基本Rの関数よりも一貫性があり説明的な名前の関数のセットを提供するため、私はパッケージを使用することを好みます(実際、私は常に「名前を思い出せないので、R "の文字nchar())。
library(stringr)
str_sub(iris$Species, end=-4)
#or
str_sub(iris$Species, 1, str_length(iris$Species)-3)
これにより、Species列の各値から最後の3文字が削除されます。
stringr、パッケージも、簡単な解決策がある: str_sub(iris$Species, end=-4)
@Matthew_Plourdeと同様 gsub
ただし、元の文字列がカットする文字数よりも短い場合は、ゼロ文字にトリムするパターン、つまり「」を返します。
cs <- c("foo_bar","bar_foo","apple","beer","so","a")
gsub('.{0,3}$', '', cs)
# [1] "foo_" "bar_" "ap" "b" "" ""
違いは、{0,3}量指定子が0〜3個の一致を示すのに対し{3}、正確に3個の一致が必要な場合、一致が見つからない場合gsub、元の変更されていない文字列が返されます。
NBの使用{,3}はと同等{0,3}です。私は単に後者の表記を好みます。
正規表現の数量詞の詳細については、こちらをご覧ください:https : //www.regular-expressions.info/refrepeat.html
-3する-0必要がありました!:私は次のように、日付のデータの多くを持って"2014-03-27 23:00:00 GMT" "2014-03-31 00:00:00 BST"一緒にはい、2つのタイムゾーン、およびas.Date機能は、(BSTの日付の日以前)予期しない結果を返している- -それゆえ私は、タイムゾーンスタンプを削除したかった、ターンを私がする必要があるから実行する-0と、時間とともに消滅します