2017-11-16 5 views
1

私が持っているデータセットの例を以下に示します。私は合計データセットに3つ以上のカラムがあることに注意してください。文字列の最初の3文字がrの文字または数字であるかどうかをテストする方法は?

ID X 
1 MJF34 
2 GA249D 
3 DEW235R 
4 4SDFR3 
5 DAS3 

は、私は、彼らがその後、あるならば、私は最初の3つの文字を表示するには、その値を置き換えたい、Xの最初の3つの文字が文字であるかどうかをテストします。最初の3文字が文字でない場合、それらの値を "FR"に置き換えたいと思います。したがって、結果は次のようになります。

ID X 
1 MJF 
2 FR 
3 DEW 
4 FR 
5 DAS 

現在、Xは文字データ型です。

ご協力いただきありがとうございます。

答えて

4

私がしようとするだろう:

x <- substr(dt$X, 1, 3) 
dt$X <- ifelse(grepl('[0-9]', x), 'FR', x) 
dt 
# ID X 
# 1 1 MJF 
# 2 2 FR 
# 3 3 DEW 
# 4 4 FR 
# 5 5 DAS 

データ:

structure(list(ID = 1:5, X = c("MJF34", "GA249D", "DEW235R", 
"4SDFR3", "DAS3")), .Names = c("ID", "X"), class = "data.frame", 
row.names = c(NA, 
-5L)) 
2

あなたは、標準ベースRを使用することができます3

に文字1を抽出する

# Your data, dt$X in your case 
x = c("MJF34", "GA249D", "DEW235R", "4SDFR3", "DAS3") 

まず使用substrコマンド

sub_str = substr(x, 1, 3) 

その後数

has_numbers = grep("[0-9]", sub_str) 

ためのテストが続いて

sub_str[has_numbers] = "FR" 
を置き換えます
関連する問題