2017-08-07 4 views
0

cbind()を使用して、セル値にdotまたはdashという要素を持つデータを結合しています。 cbind()はこれより前に何かを切り捨てているようです。dotcbindは、セル値をドットダッシュで切り捨てます

例:セルの値がXYZ.1の場合は、cbind()の後には1です。値がXYZ-02の場合、cbind()の後には2になります。

データ

A  B  C 
ABC.1 XYZ-02 PQR-03 
ABC.1 XYZ-02 PQR-03 
ABC.1 XYZ-02 PQR-03 
ABC.1 XYZ-02 PQR-03 
ABC.1 XYZ-02 PQR-03 

コード

data <- cbind(Data$A, Data$B) 

出力

A B 
1 2 
1 2 
1 2 
1 2 
1 2 

に最適出力

A  B 
ABC.1 XYZ-02 
ABC.1 XYZ-02 
ABC.1 XYZ-02 
ABC.1 XYZ-02 
ABC.1 XYZ-02 

この理由は何ですか?ありがとう。

+0

'Data'データフレームまたはdata.tableはありますか? str(データ)を試して、ここに出力を投稿してください。 – sconfluentus

+0

@sconfluentus - それは 'data.frame'です。 –

答えて

-2

てみてください、

data = cbind.data.frame(df$A, df$B) 

これは、列が同じデータフレームである

A  B 
1 ABC.1 XYZ-02 
2 ABC.1 XYZ-02 
3 ABC.1 XYZ-02 
4 ABC.1 XYZ-02 
+0

それはそれが与える出力ではないことを除けば、このコードは 'Data $ A'と' Data $ B'のような列に名前をつけます。 – thelatemail

+0

@thelatemail - それは問題ありません。私は 'cbind.data.frame()'の中でそれを行う方法がない限り、後でカラムヘッダを扱うことができ、時間を節約することができます。 –

+2

@ChetanArvindPatil - あなたは 'cbind'を全く必要としません。私の答えを見てください。 – thelatemail

2

、ご希望の出力が得られます。あなたがしたい列を引っ張ってdplyr::selectを使用します。

Data %>% dplyr::select(c(A,B))

+0

@ cephalopod - コードを 'TERR 'に移動するので、私は' dplyr'を避けたいです。それはそれをうまくサポートしません。 –

+0

@ChetanArvindPatilその場合、基本関数 'Data [、c(" A "、" B ")]' – cephalopod

11

これはただの選択で、

Data[c("A","B")] 
#  A  B 
#1 ABC.1 XYZ-02 
#2 ABC.1 XYZ-02 
#3 ABC.1 XYZ-02 
#4 ABC.1 XYZ-02 
#5 ABC.1 XYZ-02 

あなたが保存されているData内部factor変数を扱っているので、問題があります文字列ではなく内部的に整数として扱われます。

cbind(
    factor(c("a","a")), 
    factor(c("a","a"),levels=c("b","a")) 
) 
#  [,1] [,2] 
#[1,] 1 2 
#[2,] 1 2 

...あなたの結果を複製します。 2つの要素があると、すべてが整数を含む行列に強制的に戻されます。cbind

+1

を使用してください。私の仮説は、リストの使い方を教えるのに時間がかからないということです。 –

関連する問題