子-ING。在数据框中创建/清除新变量;当我子集时,不在新数据框中

时间:2017-10-20 11:07:10

标签: r dataframe

我有一个数据框,其中我已经创建了新的变量(这是原件的清理版本)。当我对数据框进行子集化时,这些新变量似乎不在子集化数据框中。我是否需要再次创建这些新变量?或者有没有办法确保它们在子集化数据框中。

更多细节:我已经附上了数据框' x'。

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

(收入是另一个变量的清理版本,是一个因子变量。) 因此,新数据框应仅包含收入低于20000的数据框。

这似乎有效,确实给了我一个具有正确观察数量的新数据框。

然而,当我尝试做

freq (newdf$income) 

我明白了:

  

plot.window(xlim,ylim,log = log,...)中的错误:     需要有限的&#39; xlim&#39;值   另外:警告信息:   1:在min(w.l)中:min没有非缺失的参数;返回Inf   2:在max(w.r)中:max没有非缺失参数;返回-Inf   3:在min(x)中:min没有非缺失参数;返回Inf   4:在max(x)中:max没有非缺失参数;返回-Inf

谢谢!

1 个答案:

答案 0 :(得分:0)

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

据我了解,您希望对income中只有一个<20000变量级别newdf的数据集进行子集化,然后选中否。 <20000

中收入为newdf的观察结果

iris数据集

中实现相同内容
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