2017-10-20 85 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