使用setDT在R中进行子集以删除值

时间:2017-11-28 18:54:22

标签: r dataframe

您好我正在使用R studio过滤掉在数据集中出现少于5000次的各种葡萄酒。

我已经运行了以下功能 -

#create new data frame with varities greater than 5000
wineVar <- setDT(wineNew)[, if(.N > 5000) .SD, by = variety]
#list the unique varieties to show theres only 5
unique(wineVar$variety)

然而,当我试图查看有多少级别时,我仍然可以获得其他632个值。

[1] Cabernet Sauvignon       Pinot Noir               Chardonnay              
[4] Bordeaux-style Red Blend Red Blend               
632 Levels: Žilavka Agiorgitiko Aglianico Aidani Airen Albana Albarín ... Zweigelt

是否有办法彻底删除这些因为它导致我的训练集出现问题 - 即训练集仍然看到值但没有丢弃变种的数据。

1 个答案:

答案 0 :(得分:1)

我认为你在寻找的是这个。你快到了。

wineVar <- setDT(wineNew)
wineVar <- wineVar[, .SD[.N > 5000], by = variety]
wineVar[, Variety:=as.factor(as.character(Variety))]