分析R中的多项选择值-获取变量的频率计数

时间:2018-07-18 12:46:08

标签: r dplyr frequency data-analysis

我导入了以下数据,其中一个问题的结构如下:

问题a)输入类型[多次选择]

  1. 1:肥料
  2. 2:农药
  3. 3:除草剂
  4. 4:喷雾器

问题b)总销量。

在data.frame中,数据分成矩阵,每个选项位于单独的列中,观察值分别为0和1。如果选择了选项,则为1;如果未选择,则为0。参见下面的data.frame的模型。

Type_of_input <- c("1:Fertiliser|2:Pesticide|4:Sprayer", "2:Pesticide|3:Herbicides", "2:Pesticide|3:Herbicide|4:Sprayer")
Fertiliser <- c(1,0,0)
Pesticide <- c(1,1,1)
Herbicide <- c(0,1,1)
Sprayer <- c(1,0,1)
total_volume <- c(40,50,60)
df_inputs <- data.frame(Type_of_input, Fertiliser, Pesticide, Herbicide, Sprayer, volume)

df_inputs

                       Type_of_input Fertiliser Pesticide Herbicide Sprayer total_volume
1 1:Fertiliser|2:Pesticide|4:Sprayer          1         1         0       1           40
2           2:Pesticide|3:Herbicides          0         1         1       0           50
3  2:Pesticide|3:Herbicide|4:Sprayer          0         1         1       1           60

如何获取每个输入及其total_volume的频率表计数?

2 个答案:

答案 0 :(得分:1)

这是一种解决方案,您可以在其中计算感兴趣的每一列的总和

Type_of_input <- c("1:Fertiliser|2:Pesticide|4:Sprayer", "2:Pesticide|3:Herbicides", "2:Pesticide|3:Herbicide|4:Sprayer")
Fertiliser <- c(1,0,0)
Pesticide <- c(1,1,1)
Herbicide <- c(0,1,1)
Sprayer <- c(1,0,1)
df_inputs <- data.frame(Type_of_input, Fertiliser, Pesticide, Herbicide, Sprayer)

library(dplyr)

df_inputs %>%
  select(-Type_of_input) %>%
  summarise_all(sum)

#    Fertiliser Pesticide Herbicide Sprayer
# 1          1         3         2       2

您可以使用其他格式

library(tidyverse)

df_inputs %>%
  select(-Type_of_input) %>%
  summarise_all(sum) %>%
  gather(var, value) %>%
  arrange(desc(value))

#          var value
# 1  Pesticide     3
# 2  Herbicide     2
# 3    Sprayer     2
# 4 Fertiliser     1

如果您想使用value变量来排列数据集并在顶部放置最受欢迎的值。

答案 1 :(得分:1)

您只需:

sapply(df_inputs[-1],sum)