Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 绘制ggplot中某个值出现在列中的次数_R_Ggplot2_Dplyr_Shiny_Plotly - Fatal编程技术网

R 绘制ggplot中某个值出现在列中的次数

R 绘制ggplot中某个值出现在列中的次数,r,ggplot2,dplyr,shiny,plotly,R,Ggplot2,Dplyr,Shiny,Plotly,我正在构建一个闪亮的应用程序,为我拥有的系统的输出报告创建可视化效果 该报告包含我感兴趣的3个字段:地址代码、街道代码和城市代码。 这些字段的值是我拥有的数字代码,这些代码的含义对于问题并不重要,我只想创建一个绘图,在这里我可以看到每个列的每个代码出现了多少次(每个字段有一个单独的绘图) 例如,DF看起来像这样 Address Code | Street Code | City Code 100 100 30 100

我正在构建一个闪亮的应用程序,为我拥有的系统的输出报告创建可视化效果

该报告包含我感兴趣的3个字段:地址代码、街道代码和城市代码。 这些字段的值是我拥有的数字代码,这些代码的含义对于问题并不重要,我只想创建一个绘图,在这里我可以看到每个列的每个代码出现了多少次(每个字段有一个单独的绘图)

例如,DF看起来像这样

Address Code | Street Code | City Code
   100              100        30
   100              100        30
   0                 15        40
                               50     
   25                          0
如您所见,代码的值也可以为null

我期望从中得到的输出类似于水平条形图

Y轴是代码本身,X轴是它们被观察的次数 下面是模拟表,我想要:

          ADDRESS CODES
100 --------------
75  -
50  -
25  -
0   -------

    0     1      2     3
我在[这里][1]看到了解决这个问题的方法,但我一直在出错

output$plot_levels <- plotly::renderPlotly({
        #loadData merely grabs the data and returns it as a data frame.
        #loadData uses fread to read the data from a file. It handles the null values as "".
        df <- loadData()
        df %>% 
            select(-`Address Code`) %>% 
            gather() %>% 
            #filter(`Address Code` != "") %>% 
            ggplot(aes(`Address Code`, ..count..)) + geom_col()
    })
输出$plot\u级别%
聚集()%>%
#筛选器(`AddressCode`!=“”)%>%
ggplot(aes(`Address Code`,…count..))+geom_col()
})
我在应用程序中不断得到“错误:未找到对象‘地址代码’”。此处引用的地址代码是ggplot行中的地址代码

那么为什么它说它不存在呢?我已经确认loadData方法正确读取了源文件,并且列名确实被读取为地址代码。 [1] :

试试这个:

library(dplyr)
library(tidyr)
library(ggplot2)
#Code
df %>% pivot_longer(everything()) %>%
  filter(!is.na(value)) %>%
  group_by(value) %>%
  summarise(N=n()) %>%
  mutate(value=factor(value,levels = unique(value),ordered = T)) %>%
  ggplot(aes(x=value,y=N))+
  geom_col(fill='cyan3')+
  coord_flip()+
  theme_bw()
输出:

或使用
绘图

library(dplyr)
library(tidyr)
library(ggplot2)
library(plotly)
#Code
ggplotly(df %>% pivot_longer(everything()) %>%
  filter(!is.na(value)) %>%
  group_by(value) %>%
  summarise(N=n()) %>%
  mutate(value=factor(value,levels = unique(value),ordered = T)) %>%
  ggplot(aes(x=value,y=N))+
  geom_col(fill='cyan3')+
  coord_flip()+
  theme_bw())
输出:

使用的一些数据:

#Data
df <- structure(list(Address.Code = c(100L, 100L, 0L, 50L, 25L), Street.Code = c(100L, 
100L, 15L, NA, NA), City.Code = c(30L, 30L, 40L, NA, 0L)), class = "data.frame", row.names = c(NA, 
-5L))
#数据

df谢谢,这段代码如何知道选择哪一列?我看不出有指示anywhere@ThePorcius您好,亲爱的,所有列都包含代码,我已经设置了
everything()
,如果您需要特定的列,请告诉我,我可以重新配置代码。完整的报告有100多列,因此我只想获取我感兴趣的代码并动态绘制它们。没有必要重写整件事,因为我相信你的方法对于寻找类似东西的人来说会非常有用,这就是Stackoverflow的想法,但对于我的具体情况,我只想知道如何替换,比如,地址的everything()Code@ThePorcius在这种情况下,请在pivoting
pivot\u上尝试此修改(地址代码)使用反勾号,然后仅重新设置该变量的形状。请告诉我这是否有效!选择(-`Address Code`)会导致传递给ggplot的数据集中不再有地址代码。删除这一行将消除错误。