我导入了以下数据,其中一个问题的结构如下:
问题a)输入类型[多次选择]
问题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
的频率表计数?
答案 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)