首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按邮政编码(因素水平)进行细分

按邮政编码(因素水平)进行细分
EN

Stack Overflow用户
提问于 2011-12-07 16:15:41
回答 1查看 3.4K关注 0票数 4

我有一个问题,我想要匹配一个非常大的调查数据集的开始邮政编码和结束邮政编码,并将这些结果放入一个新的数据格式。我创建了一个用于演示的示例dataframe。

代码语言:javascript
复制
ID = c(1,2,3,4,5) 
StartPC = c("AF2 4RE","AF3 5RE","AF1 3DR","AF2 4RE","AF2 4PE")
EndPC = c("AF2 4RE","NA","AF2 3DR","AX2 4RE","AF2 4PE")
data<-data.frame(ID,StartPC,EndPC)

data2 <- subset(data, StartPC==EndPC,na.rm=TRUE)

使用上面的代码,我想要创建一个dataframe (data2),它只包含ID号,其中开始和结束的邮政编码是相同的。但是,我得到了错误消息:

错误在Ops.factor(StartPC,EndPC):水平集的因素是不同的

输出只需要在新数据表中包含ID号1和5。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-07 16:25:24

那是因为

代码语言:javascript
复制
 Error in Ops.factor(StartPC, EndPC) : level sets of factors are different

您的两列是因素,而不是字符。因子是分类变量,它们存储为整数和“级别”的查找表。比较它们实际上是比较底层整数,所以R确保您是在比较具有相同级别的因素。如果没有,它就会认定你在做坏事。

因此,转换为字符:

代码语言:javascript
复制
> subset(data, as.character(StartPC)==as.character(EndPC),na.rm=TRUE)
  ID StartPC   EndPC
1  1 AF2 4RE AF2 4RE
5  5 AF2 4PE AF2 4PE

要么就像这样,要么让数据帧中的字符放在首位,要么确保这两列都是以相同的级别生成的。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8418580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档