gpt4 book ai didi

r - 按邮政编码进行子集化(因子级别)

转载 作者:行者123 更新时间:2023-12-04 23:28:35 25 4
gpt4 key购买 nike

我有一个问题,我想匹配一个非常大的调查数据集的起始邮政编码和结束邮政编码,并将这些结果放在一个新的数据框中。我创建了一个示例数据框用于说明目的。

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)

使用上面的代码,我想创建一个仅包含 ID 号的数据框 (data2),其中起始和结束邮政编码相同。但是,我收到错误消息:

Error in Ops.factor(StartPC, EndPC) : level sets of factors are different



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

最佳答案

那将是因为

 Error in Ops.factor(StartPC, EndPC) : level sets of factors are different

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

所以转换为字符:
> 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

要么像那样即时,要么首先使用字符制作数据框,或者确保两列都具有相同的级别。

关于r - 按邮政编码进行子集化(因子级别),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8418580/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com