Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.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 绘制除一个变量外所有变量的总和_R_Ggplot2_Tidyr - Fatal编程技术网

R 绘制除一个变量外所有变量的总和

R 绘制除一个变量外所有变量的总和,r,ggplot2,tidyr,R,Ggplot2,Tidyr,我有一个数据框,其中包含三个不同国家(加拿大、墨西哥、美国)调查对象在两个不同时间点(现在和以前)拥有的电视和收音机数量的数据: 然而,变化 DF %>% mutate_all(funs(sum), na.rm = TRUE) %>% gather(key=Device, value=Number, -Country) %>% ggplot(aes(x=Device,fill=Device)) + geom_bar(aes(x = Device, y = Num

我有一个数据框,其中包含三个不同国家(加拿大、墨西哥、美国)调查对象在两个不同时间点(现在和以前)拥有的电视和收音机数量的数据:

然而,变化

DF %>% mutate_all(funs(sum), na.rm = TRUE) %>%
  gather(key=Device, value=Number, -Country) %>% 
  ggplot(aes(x=Device,fill=Device)) + 
  geom_bar(aes(x = Device, y = Number), position = "dodge", stat = "identity") +
  facet_wrap(~Country)
导致错误的原因:

Error in mutate_impl(.data, dots) : 
  Evaluation error: ‘sum’ not meaningful for factors.

有没有一种方法可以从
sum
中排除该因子,或者用另一种方法生成预期的绘图?

您可以使用summary函数对不同的列进行汇总。下面我使用dplyr的
summary\u if()
函数对数值列进行了汇总

DF <- data.frame(TV_now = as.numeric(c(4, 9, 1, 0, 4, NA)),
             TV_before = as.numeric(c(4, 1, 2, 4, 5, 2)),
             Radio_now = as.numeric(c(4, 5, 1, 5, 6, 9)),
             Radio_before = as.numeric(c(6, 5, 3, 6, 7, 10)),
             Country = as.factor(c("Mexico", "Canada", "US", "US", "Canada", "US")))

DF %>%
        group_by(Country) %>%
        summarise_if(is.numeric,sum,na.rm=TRUE) %>%
        gather(key=Device, value=Number, -Country) %>% 
        ggplot(aes(x=Device,fill=Device)) + 
        geom_bar(aes(x = Device, y = Number),position = "dodge", stat = "identity") + 
        facet_wrap(~Country)
DF%
按(国家)划分的组别%>%
如果(是数字,求和,na.rm=TRUE)%>%,则汇总
聚集(键=设备,值=数字,-国家)%>%
ggplot(aes(x=设备,fill=设备))+
几何图形条(aes(x=设备,y=编号),position=“dodge”,stat=“identity”)+
面_包装(~国家)
结果是:


这太完美了。正是我想要的。
Error in mutate_impl(.data, dots) : 
  Evaluation error: ‘sum’ not meaningful for factors.
DF <- data.frame(TV_now = as.numeric(c(4, 9, 1, 0, 4, NA)),
             TV_before = as.numeric(c(4, 1, 2, 4, 5, 2)),
             Radio_now = as.numeric(c(4, 5, 1, 5, 6, 9)),
             Radio_before = as.numeric(c(6, 5, 3, 6, 7, 10)),
             Country = as.factor(c("Mexico", "Canada", "US", "US", "Canada", "US")))

DF %>%
        group_by(Country) %>%
        summarise_if(is.numeric,sum,na.rm=TRUE) %>%
        gather(key=Device, value=Number, -Country) %>% 
        ggplot(aes(x=Device,fill=Device)) + 
        geom_bar(aes(x = Device, y = Number),position = "dodge", stat = "identity") + 
        facet_wrap(~Country)