2016-08-25 4 views
-3

私は、最初の(列= 0)と2番目の列(列= 1)の2つの列に適合するデータフレームを持っています。私はゼロの列を指定しようとしていますが、私はいくつかの問題があります。 str()関数を適用すると、その出力から2つではなく1つの変数(列1)が得られます(列0と1)。名前がないときにデータフレームの列に名前を付けるにはどうすればいいですか?

理解度の高い列1は「変数」で、列0は「識別」である必要がありますが、実行することができません。

以下

dataexampleと私が使用していますsrciptであるが、非肯定的な結果(下記参照)で:詳細については

 Variable 
A.1  1178 
A.2  1187 
A.3  1190 
B.1  983 
B.2  1002 
B.3  977 
C.1  1056 
C.2  1027 
C.3  1043 
D.1  974 
D.2  1003 
D.3  986 

names(dataexample)[0]<-paste("Identification") 
names(dataexample)[1]<-paste("Variable") 

、両方のスクリプトが効果的に実行するだけで二列に名前を割り当て。さらに、この表は、分割基準として「識別」を使用する機能sum()に由来します。

+6

、インデックスは、データセット内の唯一の単一の列があり1から始まります。もう1つは 'row.names'です – akrun

+3

btwいくつかのタイプの拡張関数から発生したrownamesのように見えます – Sotos

+3

私は2つのステップでそれを行います:' df $ Ident < - row.names(df); row.names(df)< - NULL' –

答えて

0

Rでは、索引付けは1から始まります。私たちが話していた列は、ただrow.namesです。 2つの列が必要な場合は、base Rを使用して、列名から新しい列「識別」を作成できます。

df1<- `row.names<-`(transform(dataexample, Identification = row.names(df1))[2:1], NULL) 

もちろん、OPの投稿のコメントのように2つのステップで行うことができます。しかし、有用な場合に備えて、私は1ライナーを掲示しました。


我々はパッケージを使用している場合は、data.tableを持つ一つの選択肢はTRUEFALSEからkeep.rownamesのデフォルト設定を変更することです。 R` `で

library(data.table) 
setnames(setDT(dataexample, keep.rownames = TRUE), 1, "Identification") 
+6

2人ではなく1人のライナーだからこそ、経験の浅いRユーザーにこのような複雑な基盤Rソリューションを推奨する理由がわからないのですか? –

+1

いいえ、まったくありません。それが働くので、それは問題の有効な解決策とみなされるべきです。しかし、2行のコードが含まれているが、読みやすく、理解しやすい、はるかに単純な解決策がある(私の意見では)OPの方が特に役立つのではないかと疑う。したがって、私はあなたの答えをupvoteしません –

+0

それは完全に働いた。どうもありがとうございました。よろしく。 Matías。 –

1
tibble::rownames_to_column(dataexample, "Identification") 
関連する問題