Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.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
如何将facet_wrap(~list)与列表一起使用?_R_Ggplot2_Dplyr_Data Analysis_Facet Wrap - Fatal编程技术网

如何将facet_wrap(~list)与列表一起使用?

如何将facet_wrap(~list)与列表一起使用?,r,ggplot2,dplyr,data-analysis,facet-wrap,R,Ggplot2,Dplyr,Data Analysis,Facet Wrap,我有正在执行EDA的数据。 其中一列包含字符列表。 我想对列表的每个唯一值使用facet\u wrap,而不是整个列表 我该怎么做 经验: 我想分别对每种饮食价值做不同的绘图 “提前感谢”是您希望在绘图/刻面之前分割该列中的饮食值的工具吗? 那可能是你问题的解决办法 library(dplyr) library(tidyr) library(ggplot2) df %>% separate_rows(diet, sep = ',') %>% ggplot() + ...

我有正在执行EDA的数据。 其中一列包含字符列表。 我想对列表的每个唯一值使用
facet\u wrap
,而不是整个列表

我该怎么做

经验:

我想分别对每种饮食价值做不同的绘图


“提前感谢”

是您希望在绘图/刻面之前分割该列中的
饮食值的工具吗?
那可能是你问题的解决办法

library(dplyr)
library(tidyr)
library(ggplot2)

df %>% 
  separate_rows(diet, sep = ',') %>%
  ggplot() + ...
这将在提供的分隔符处将
diet
列拆分为多行,同时将所有其他列值复制到每个生成的行中。

您可以尝试以下操作:

library(tidyverse)
library(tidyr)
#Data
df <- structure(list(heights = c(14.3, 12.3, 11.2, 10, 12.3), diet = c("cw,ce,la", 
"cw", "ap, la", "lp", "ce,cw"), z = c(-0.940250088024965, -0.916085008989365, 
0.346802165714023, 0.416379800831458, -0.284455862566136)), row.names = c(NA, 
-5L), class = "data.frame")

#Separate cols, we place 3 because the largest number of diets is 3 in first row
#If you have more you would have to expand such quantity
df2 <- separate(df,col = diet,into = paste0('diet',1:3),sep = ',')
#Pivot
df3 <- pivot_longer(df2,cols = names(df2)[which(grepl('diet',names(df2)))])
#Prepare plot
df4 <- df3 %>% mutate(value=trimws(value)) %>% filter(!is.na(value))
#Plot
ggplot(df4,aes(x=heights,y=z))+
  geom_point()+
  facet_wrap(.~value)
库(tidyverse)
图书馆(tidyr)
#资料

df只是为了澄清,您想对
饮食的每个值使用
facet\u wrap
?子批次的x和y变量是什么?@Aziz是的,关于饮食的每个元素。我的x是高度,y是另一个变量,比如z。我想把它们和节食结合起来。我现在的数据集完全符合我的要求。非常感谢。@thatsilentwatcher太好了!!如果您对这个答案感到满意,您可以通过在此解决方案的左侧勾选来接受它:)
library(tidyverse)
library(tidyr)
#Data
df <- structure(list(heights = c(14.3, 12.3, 11.2, 10, 12.3), diet = c("cw,ce,la", 
"cw", "ap, la", "lp", "ce,cw"), z = c(-0.940250088024965, -0.916085008989365, 
0.346802165714023, 0.416379800831458, -0.284455862566136)), row.names = c(NA, 
-5L), class = "data.frame")

#Separate cols, we place 3 because the largest number of diets is 3 in first row
#If you have more you would have to expand such quantity
df2 <- separate(df,col = diet,into = paste0('diet',1:3),sep = ',')
#Pivot
df3 <- pivot_longer(df2,cols = names(df2)[which(grepl('diet',names(df2)))])
#Prepare plot
df4 <- df3 %>% mutate(value=trimws(value)) %>% filter(!is.na(value))
#Plot
ggplot(df4,aes(x=heights,y=z))+
  geom_point()+
  facet_wrap(.~value)