我有一个大型数据集(> 37米个人),我正在使用R.我非常喜欢初学者。目前,我正在尝试(并尝试并尝试)计算我正在分析的国家/地区中每个省的平均家庭规模。我已设法创建一个单独的数据框,其中所需的变量为每个人提供一个单独的数字,因此在变量HH(对于HouseHolds)下给出一个家庭编号。现在我希望R从我创建的新数据框中删除此特定列的重复项,即HH列。
我尝试过多次使用duplicate()和unique()函数,但它不起作用。我还尝试在单独的工作表中隔离这个“HH”列,但这些功能仍然没有删除重复项。我也尝试将其转换为向量,然后执行duplicate()和unique()函数(如下所示)。
当我在excel中使用较小的样本时,它的效果非常好(要求excel删除重复项)。
这是我根据初始数据集(即PHCKCON)创建数据集的方式:
HHvars<-c("eano", "county", "tif")
HHKE<-PHCKCON[HHvars]
as.numeric(HHKE$county)
HHKE$county<-as.numeric(HHKE$county)
然后我为我的家庭创建了第4列:
HHKE$HH<-(paste(HHKE$eano, HHKE$county, HHKE$tif))
以下是我的数据集示例: The values in the first three columns are numeric whilst the last are classified as characters
以下是一小部分数据样本(我发明了这些但同样的想法):
Enumeration.area County Household.members
1 a 4
1 a 4
1 a 6
1 a 6
1 a 8
1 a 8
1 a 8
2 a 4
2 a 4
2 a 6
1 b 6
1 b 6
1 b 8
1 b 8
1 b 12
1 b 12
1 b 12
1 b 12
以下是我创建第四列HH所做的工作:
mydata$HH<-paste(mydata$Enumeration.area, mydata$County, mydata$Household.members)
然后给出第四列。
HH
1 a 4
1 a 4
1 a 6
1 a 6
1 a 8
1 a 8
1 a 8
1 a 8
2 a 4
2 a 4
2 a 6
2 a 8
1 b 6
1 b 6
1 b 8
1 b 8
1 b 12
1 b 12
1 b 12
1 b 12
然后我为我的HH列创建了一个单独的数据集(为了复制):
attach(mydata)
HHvars<-c("HH")
EX2<-mydata[HHvars]
然后我试图复制EX2,HH colum:
EX2[!duplicated(EX2$HH),]
但它不起作用。而不是在使用
时unique()
功能。
我希望它更清楚!仍然感谢任何帮助。
干杯, 马德琳
答案 0 :(得分:0)
如果您要求的只是每个enumeration.area的每个县的平均值和中位数,您可以使用Item {
id: test
x: 10
y: 10
function reset() {
x = 10;
y = 10;
}
}
相当快地完成此操作。我在下面列出了一些与你的数据相符的数据。
dplyr
结果是:
library(dplyr)
HH <- data.frame(
Enumeration.area=c(1,1,1,2,2,2,3,3,3),
County=c('a','a','b','a','a','a','b','a','b'),
Household.members=c(4,6,5,8,10,9,3,4,3)
)
HH %>% group_by(Enumeration.area,County) %>% summarise(mean=mean(Household.members),median=median(Household.members))
然后,结果数据集的每一行都是Enumeration.area和County的唯一组合,对于这些组合中的每一个,您都会得到您的平均家庭数和中位数。
修改强>
由于您所需的输出是关于为每个观察创建连锁标识符,因此您可以这样做:
Enumeration.area County mean median
(dbl) (fctr) (dbl) (dbl)
1 1 a 5 5
2 1 b 5 5
3 2 a 9 9
4 3 a 4 4
5 3 b 3 3
这将创建一个字符串,它是Enumeration.area,County和Household.members的组合。然后使用df <- HH %>% group_by(Enumeration.area,County) %>%
mutate(id=paste(Enumeration.area,County,Household.members))
将删除所有重复项,如下所示:
distinct(id)
如您所见,重复行&#34; 3 b 3&#34;现在刚刚被简化为一个独特的观察。