2017-10-20 81 views
0

我有一个数据框,其中我已经创建了新的变量(这是'清理'版本的原件)。当我将数据框子集时,这些新变量似乎不在子集数据框中。我是否需要再次创建这些新变量?还是有办法确保它们处于子集数据框中。子集。在数据框中创建/清除新变量;当我子集,而不是在新的数据框

更多的细节:我'附加'数据框'x'。

newdf <- subset (x, (income %in% c('<20000'))) 

(收益以清洁另一个变量的版本,是一个因素变量)。 所以新的数据帧应当只包含那些收入低于20000

这似乎是工作,并执行,确实给了我一个正确的观察数量的新数据框。

但是,当我尝试做

freq (newdf$income) 

我得到:

错误plot.window(XLIM,ylim,登录日志= ...): 需要有限“ xlim'值 此外:警告消息: 1:在min(wl)中:没有非缺少参数为min;返回Inf 2:在max(w.r)中:没有非缺少参数为max;返回-Inf 3:在min(x)中:没有非缺少参数min;返回Inf 4:在max(x)中:没有非缺失参数为max;返回-Inf

谢谢!

+0

你能提供一些示例数据? – Wimpel

+0

请使用'dput(head(data,20))'发布数据集示例。和示例代码一样,任何人都不可能帮助你。 –

回答

0

使用table()函数检查新子集化数据帧中的频率或计数income

据我知道你想有子集只是你的数据集的incomenewdf变量即<20000,然后检查无级别之一。与在newdf

iris数据集中实现相同收入<20000观察

dim(iris) 
# [1] 150 5 

table(iris$Species) 

# setosa versicolor virginica 
#  50   50   50 


newdf <- subset(iris, Species %in% "virginica") 
dim(newdf) 
# [1] 50 5 

table(newdf$Species) 

# setosa versicolor virginica 
#  0   0   50 

另一个例子

df <- data.frame(a = 1:9, b = as.factor(rep(c("<100","<200", "<300"), each = 3))) 
df 
# a b 
# 1 1 <100 
# 2 2 <100 
# 3 3 <100 
# 4 4 <200 
# 5 5 <200 
# 6 6 <200 
# 7 7 <300 
# 8 8 <300 
# 9 9 <300 

table(df$b) 

# <100 <200 <300 
# 3 3 3 

newdf <- subset(df, b %in% "<300") 
newdf 
# a b 
# 7 7 <300 
# 8 8 <300 
# 9 9 <300 

table(newdf$b) 

# <100 <200 <300 
# 0 0 3 
+0

暗淡(x)的数据帧#original > [1] 10364 1086 暗淡(newdf)#NEW数据帧,正确创建&有权尺寸 > [1] 2301 1086 表(newdf $收入) 但后来我得到这个: ><程度的表0> – Rainmaker

+0

请检查是否'income'存在作为newdf列名的一个或看看是否有错字.. –

+0

它本质上好像是那样的变量在原始数据框中,在新的数据框中很好,但我创建的变量不是。 – Rainmaker