R 应用过滤器会导致显示变量的所有级别

R 应用过滤器会导致显示变量的所有级别,r,plotly,bar-chart,stacked,R,Plotly,Bar Chart,Stacked,我过滤了一个数据帧,然后使用“摘要”来获得我想要的指标 df.2 <- df.1 %>% filter(state %in% c("NY", "NJ", "MI", "LA", "WA")) %>% group_by(state) %>% summarise(V1 = max(v1), V2 = max(v2), V3 = max(v3)) 所有的状态都出现在x轴上,尽管在纽约、新泽西等地特别过滤。另一个问题是。。。地块没有堆叠。如何解决这些问题 Dput: st

我过滤了一个数据帧,然后使用“摘要”来获得我想要的指标

df.2 <- df.1 %>% filter(state %in% c("NY", "NJ", "MI", "LA", "WA")) %>% group_by(state) %>% 
  summarise(V1 = max(v1), V2 = max(v2), V3 = max(v3))
所有的状态都出现在x轴上,尽管在纽约、新泽西等地特别过滤。另一个问题是。。。地块没有堆叠。如何解决这些问题

Dput:

structure(list(state = structure(1:5, .Label = c("LA", "MI", 
"NJ", "NY", "WA"), class = "factor"), V1 = c(582, 845, 1232, 
5489, 372), V2 = c(16284, 18970, 44416, 138863, 8384), 
    V3 = c(58371, 31362, 50558, 201195, 83391)), row.names = c(NA, 
-5L), class = c("tbl_df", "tbl", "data.frame"))

我们可以使用“df.2”上的
droplevels
删除未使用的级别(假设列“state”是
factor
类)


这很有效,谢谢你。你知道怎么把它们叠起来吗?“我的代码没有创建堆叠的条形图。@purple\u plop一个选项是转换为
因子
,并按照值的顺序排列
级别
,即@purple\u plop这里有三列,顺序应基于column@purple_plop如果你做了
df.2%排列(V1,V2,V3)%%>%变异(状态=因子(状态,级别=唯一(状态))
structure(list(state = structure(1:5, .Label = c("LA", "MI", 
"NJ", "NY", "WA"), class = "factor"), V1 = c(582, 845, 1232, 
5489, 372), V2 = c(16284, 18970, 44416, 138863, 8384), 
    V3 = c(58371, 31362, 50558, 201195, 83391)), row.names = c(NA, 
-5L), class = c("tbl_df", "tbl", "data.frame"))
df.2 <- droplevels(df.2)
plot_ly(df.2, x = ~state, y = ~V1, type = "bar", name = "Name1") %>%
  add_trace(y = ~V2, name = "Name2") %>% 
  add_trace(y = ~V3, name = "Name3") %>%
  layout(yaxis = list(title = "Count"), barmode = "stack")
df.2 %>%
  arrange(V3, V2, V1) %>% 
  mutate(state = factor(state, levels = unique(state))) %>%
  plot_ly(x = ~state, y = ~V1, type = "bar", name = "Name1") %>%
  add_trace(y = ~V2, name = "Name2") %>%
  add_trace(y = ~V3, name = "Name3") %>%
  layout(yaxis = list(title = "Count"), barmode = "stack")