使用子集但旧的变量仍然存在

时间:2013-06-25 16:18:04

标签: r subset

我正在使用一个数据集,这个数据集基本上是不同城市(约150个城市)的日常使用数据(我们只是说变量X和Y)。我只为特定城市创建了一个数据子集,只选择了150个城市中的3个城市 然后,当我按城市进行tapply时,我获得了3个城市的资金,但也获得了数据集中所有其他147个城市的NA。我正在使用以下编码

df<-read.csv(...)
df_sub<-subset(df,df$City==1|df$City==3|df$City==19)
X_Breakdown<-tapply(X,df_sub$City, mean, na.rm=TRUE)
Print(X_Breakdown)

这给了我:

                    City 1                         City 2 
                        15                             NA 
                    City 3                         City 4 
                        12                             NA 
                    City 5                         City 6 
                        NA                             NA 

希望你能得到这个想法。我想获得一个仅包含我感兴趣的3个城市的数据集。

似乎变量集是用R编码的,有没有办法解决这个问题?

2 个答案:

答案 0 :(得分:2)

City很可能是一个因素:

fac <- factor(1:2,levels=1:3)
tapply(1:2,fac,mean)
# 1  2  3 
# 1  2 NA 

使用droplevels

tapply(1:2,droplevels(fac),mean)
#1 2 
#1 2

答案 1 :(得分:0)

假设您的原始数据为df(未经测试)

使用subset作为@Roland:

df_sub<-subset(df, City %in% c(1,3,19))

使用ddply中的plyr package代替tapply

require(plyr)
X_Breakdown<-ddply(df_sub, .(City), summarize, meancity=mean(City))

注意:最好是给我们一个样本数据。