【问题标题】:R: Applying factor values from one column to anotherR:将因子值从一列应用到另一列
【发布时间】:2018-03-16 08:15:25
【问题描述】:

我正在尝试在 R 中处理市政信息,并且似乎是这些因素(确切地说是 factor())。是实现我的目标的最佳方式。我才刚刚开始掌握 R 的窍门,所以我想我的问题可能很简单。

我有以下示例数据框要分享(芬兰城市的一小部分):

municipality<-c("Espoo", "Oulu", "Tampere", "Joensuu", "Seinäjoki", 
"Kerava")
region<-c("Uusimaa","Pohjois-Pohjanmaa","Pirkanmaa","Pohjois-Karjala","Etelä-Pohjanmaa","Uusimaa")

myData<-cbind(municipality,region)
myData<-as.data.frame(myData)

默认情况下,R 将我的字符列转换为因子,可以使用str(myData) 进行测试。现在到我的初学者到新手 R 级技能结束的部分:我似乎无法找到一种方法将 region 列中的因子应用到 municipality 列。

让我演示一下。而不是原来的结果

as.numeric(factor(myData$municipality))

[1] 1 4 6 2 5 3

我想得到这个,来自 myData$region 的因素应用于 myData$municipality。

as.numeric(factor(myData$municipality))

[1] 5 4 2 3 1 5

我张开双臂欢迎任何帮助。谢谢。

【问题讨论】:

  • 您要根据as.numeric(myData$region) 重新排序myData$municipality 吗?如果是这样,您可以使用myData$municipality[myData$region]。正如@jogo 指出的那样,您可以/应该使用with() 而不是attach(),例如with(myData, municipality[region]).
  • 感谢 cmets jogo 和 markus。首先,我想谈谈我对 attach() 的使用。认为它消失了。我从来没有真正使用过它,但现在出于某种原因使用了它。在这个问题中,我想在municipality 因子级别中获得region 因子级别,替换原来的。例如,levels(myData$municipality)&lt;-c(levels(myData$region)) 不起作用。请原谅我,这里的部分问题似乎是我对 R 白话或任何编程语言白话都不熟悉。

标签: r factors


【解决方案1】:

为了更好地理解因子在 R 中的使用,请查看 here

如果你想添加因子水平,你必须在你的数据框中做这样的事情:

levels(myData$region)
[1] "Etelä-Pohjanmaa"   "Pirkanmaa"         "Pohjois-Karjala"   "Pohjois-Pohjanmaa" "Uusimaa"          
> levels(myData$municipality)
[1] "Espoo"     "Joensuu"   "Kerava"    "Oulu"      "Seinäjoki" "Tampere"  
> levels(myData$municipality)<-c(levels(myData$municipality),levels(myData$region))
> levels(myData$municipality)
 [1] "Espoo"             "Joensuu"           "Kerava"            "Oulu"              "Seinäjoki"        
 [6] "Tampere"           "Etelä-Pohjanmaa"   "Pirkanmaa"         "Pohjois-Karjala"   "Pohjois-Pohjanmaa"
[11] "Uusimaa"

【讨论】:

  • 感谢您的回答,但这不是我想要达到的目标。我试图让我的数据框使用因子以数字形式存储信息,例如“Espoo”和“Kerava”属于“Uusimaa”,而 Joensuu 属于“Etelä-Pohjanmaa”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多