2017-05-19 5 views
1

私は、文書用語行列からデータフレームに変換されたデータを訓練しようとしています。肯定と否定のコメントは別々のフィールドがありますので、異なるフィールドから来る同じ単語を区別するために、「タグ」として機能するように列名に文字列を追加する必要がありました。たとえば、helloという単語は正と負のコメントフィールド(したがって、私のデータフレームの列として表される)で、私のモデルでは、列名をpositive_helloとnegative_helloにすることで区別したいと思います。Rのデータフレーム内のすべての列名に特定の文字列を追加する最も良い方法は何ですか?

私は、特定の文字列がデータフレーム内のすべての列に追加されるように列の名前を変更する方法を探しています。 mtcarsのために、私は列名がmpg_samplecyl_sampledisp_sampleというように、もともとmpgた、cyl、およびdispになるよう、最後に「_sample」を持っているすべての列の名前を変更したい、と言います。

sapplyまたはlapplyを使用することを検討していますが、進歩はありませんでした。どんな助けでも大歓迎です。

+3

あなたは 'sprintf'と' paste'を調べてください。小さな再現可能な例を提供できますか? –

+0

提案をお寄せいただきありがとうございます。私は達成しようとしているものの例を示すために質問を編集します。私もそれらを調べます。 – dizzygirl

答えて

1

あなたは、文字列と列内の各項目を接頭辞にしたい場合は、あなたがpaste()を使用することができます。

# Generate sample data 
df <- data.frame(good=letters, bad=LETTERS) 

# Use the paste() function to append the same word to each item in a column 
df$good2 <- paste('positive', df$good, sep='_') 
df$bad2 <- paste('negative', df$bad, sep='_') 

# Look at the results 
head(df) 
    good bad  good2  bad2 
1 a A positive_a negative_A 
2 b B positive_b negative_B 
3 c C positive_c negative_C 
4 d D positive_d negative_D 
5 e E positive_e negative_E 
6 f F positive_f negative_F 

編集: 私は質問を誤解したように見えます。しかし、あなたは同様の方法で、列の名前を変更することができます

colnames(df) <- paste(colnames(df), 'sample', sep='_') 
colnames(df) 
[1] "good_sample" "bad_sample" "good2_sample" "bad2_sample" 

または1つの特定の列の名前を変更するには(この場合は列1、):

colnames(df)[1] <- paste('prefix', colnames(df)[1], sep='_') 
colnames(df) 
[1] "prefix_good_sample" "bad_sample"   "good2_sample"  "bad2_sample"  
+0

@smacdonaldへの返答ありがとうございます。値の代わりに列の名前を変更したかったのです。あなたはインデックスを使って 'paste'を使うのが効果的な方法だろうと思いますか? – dizzygirl

1

使用COLNAMESとpaste0機能:

df = data.frame(x = 1:2, y = 2:1) 
colnames(df) 

[1] "X" "Y"

colnames(df) <- paste0('tag_', colnames(df)) 
colnames(df) 

[1] "tag_x" "tag_y"

2

data.tableパッケージのsetnamesを使用できますが、データのコピーは作成されません。

library(data.table) 
df <- data.frame(a=c(1,2),b=c(3,4)) 
# a b 
# 1 1 3 
# 2 2 4 
setnames(df,paste0(names(df),"_tag")) 
print(df) 
# a_tag b_tag 
# 1  1  3 
# 2  2  4 
関連する問題