复制数据帧R中unique()字符串向量的结果

时间:2013-07-03 18:45:51

标签: r vector copy dataframe

我很困惑,我认为很容易就会有所作为。 我有一个包含年份,城市和物种列的数据框。

           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

1 个答案:

答案 0 :(得分:1)

要查明某列是因素还是字符,您可以使用此is.factor(df$City)is.character(df$City)

如果是factor列,则(唯一)级别存储在levels属性中,可以使用

进行访问
levels(df$City)

注意:这可能包含向量中不存在的级别,例如,如果某些行已被删除或已添加某些级别。

要检索factorcharacter向量的唯一元素,您可以使用:

as.character(unique(df$City))

将返回因子列中不存在的级别。

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