0

簡単にうまくいくと思っていたものに戸惑っています。年、都市、種の列を持つデータフレームがあります。

           species      City  Year
80     Landpattedyr  Sisimiut 2007
83     Landpattedyr  Sisimiut 2008
87     Landpattedyr  Sisimiut 2009
721733  Havpattedyr Upernavik 2010
721734  Havpattedyr Upernavik 2011
721735  Havpattedyr Upernavik 2007

次のようにユニークな機能を使用しました

years<-unique(df$year)
city<-unique(df$City)
species<-unique(df$species)

次に、インデックスに基づいて、これらの各ベクトルの値をデータフレーム行に割り当てる必要があります。たとえば、

hunting[1,]$year<-year[i]
hunting[1,]$group<-species[j]
hunting[1,]$city<-city[k]

問題は、ハンティング DF の都市と種が数字として表示される一方で、年だけが適切にコピーされることです。なぜこれが起こっているのかわかりません。誰でも助けてもらえますか?

   year group city   lat   long total
1  2007     6   19 66.93 -53.66  4563
NA 2007     6   20 72.78 -56.15    91
3  2007     6    8 67.01 -50.72   388
4  2007     6   21 70.66 -52.12   280
5  2007     6   14 77.47 -69.23   469
6  2007     6    5 69.22 -51.10  1114
4

1 に答える 1

1

列が要素か文字かを調べるには、これis.factor(df$City)またはを使用できますis.character(df$City)

列の場合factor、(一意の) レベルはlevels属性に格納され、次の方法でアクセスできます。

levels(df$City)

注: これには、ベクトルに存在しないレベルが含まれる場合があります。たとえば、一部の行が削除された場合や、一部のレベルが追加された場合です。

factorまたはベクトルの一意の要素を取得するには、characterこれを使用できます。

as.character(unique(df$City))

因子列に存在しないレベルは返されません

unique(as.character(df$City))注: 最後のコマンドは、おそらく短いベクトルで変換が評価されるため、よりもわずかに効率的です。

于 2013-07-04T01:38:38.693 に答える