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要检索 a或向量的唯一元素character,您可以使用以下命令:

as.character(unique(df$City))

不会返回因子列中不存在的水平。

注意:最后一个命令比 更有效unique(as.character(df$City)),因为转换是在可能更短的向量上评估的。

于 2013-07-04T01:38:38.693 回答