r - 地 block 上不需要的元素

标签 r ggplot2 dataframe

我在 R 中使用 data.frame 的子集时遇到问题。

子集已正确创建和显示,但是当我尝试使用 qplot() 绘制它时,未被 subset() 选择的行也得到沿一个轴显示。

我正在阅读的实际文件是网络服务器日志,但我创建了一个小示例来说明我的问题:

这是我读入的 ITEMSSOLD.CSV 文件:

CUST,DT,ITEM,PRICE
BigJoe,10/13/2010,Pickup Truck,20000
TightWad,10/13/2010,USB Drive,12
Jane,10/13/2010,Smart Car,30000
Scrooge,10/13/2010,Gumdrops,1
GeekyMan,10/13/2010,Smart Car,30000

我将其读入数据框,如下所示:

sales_df <- read.table("C:/R_Expt/ItemsSold.csv", header=TRUE, sep=",")

然后我做了一个子集来获取高价商品如下:

big_sales_df <- subset(sales_df, PRICE>100)

big_sales_df

big_sales_df
      CUST         DT         ITEM PRICE
1   BigJoe 10/13/2010 Pickup Truck 20000
3     Jane 10/13/2010    Smart Car 30000
5 GeekyMan 10/13/2010    Smart Car 30000

所以看起来没问题。

当我尝试通过 qplot 绘制它时,如下所示:

qplot(nrow, ITEM, data = ddply(big_sales_df, .(ITEM), "nrow"))

结果图在 Y 轴上显示所有 ITEMS,而不仅仅是 Pickup Truck 和 智能汽车。

ddply() 单独产生以下输出:

ddply(big_sales_df, .(ITEM), "nrow")
          ITEM nrow
1 Pickup Truck    1
2    Smart Car    2

由于示例中的 ITEM 数量较少,绘图仍然可读,但在现实生活中,我试图绘制慢速网页的名称,不幸的是,qplot() 试图将所有网页的名称放在 Y 轴上,它就会变成黑色模糊。

我还尝试了 sqldf():

qplot(NSOLD, ITEM, data = sqldf('select ITEM, count(*) as NSOLD from big_sales_df group by ITEM order by count(*) desc'))

但这会产生相同的情节。

我的理解是 subset() 以某种方式在内部携带完整的父信息,而不仅仅是匹配的行。

有什么方法可以告诉 subset() 它应该只保留相关信息吗?

或者任何其他绕过 subset() 携带空成员的方法?

我知道一个蛮力方法可能是将 subset() 的结果写入另一个 CSV 文件,然后在 data.frame 中读回,但我相信有更简单的方法。

非常感谢所有 R 专家!

阿蒂什

最佳答案

您需要删除从您的子集中删除的因子水平。

big_sales_df$ITEM <- factor(big_sales_df$ITEM)
big_sales_df$CUST <- factor(big_sales_df$CUST)

或更改您读取数据的方式:

sales_df <- read.csv("ItemsSold.csv", header=TRUE, stringsAsFactors=FALSE)

关于r - 地 block 上不需要的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3991870/

相关文章:

python - Pandas 在多列上使用 apply 函数扩展

python - Pandas 数据框插入缺失的行并填充上一行

r - 如何在 R 中使用 ggplot 制作散点图,其中颜色根据 y>x 或 y<x 变化?

r - 优雅地显示 R 公式(如在 Latex 中)

r - R 可以将表情符号字符转换为对应的文本吗?

将 sdmx-xml 文件读入 R 中的数据帧

r - 根据某一年的观察值对 ggplot2 中的面板数据进行排序

r - 在 R 统计中的 ggplot2 中标记每个箱线图中两条 mustache 的末端

r - 使用facet_wrap时在ggplot2中使用具有不同比例因子的辅助y轴

python - 基于列中的约束处理 pandas 数据框中的聚合