首页 > 解决方案 > 在R中分解多个谷歌表单条目

问题描述

我有一个 csv 文件,其中包含来自在线 Google 表单的结果,我用它在 R 中创建图表。表单上有一个问题允许多个回复,人们可以在回复中写下。Google 表单创建 CSV 的方式是将所有答案放在一行中。以下是几行的示例:

日期 治疗的改变
1/4 开始新药,改变剂量
1/5 开始新药
1/6 停药,开始新药,新诊断
1/7 新诊断

我想创建一个条形图来总结对问题的所有个人响应,但为了做到这一点,我需要将每个响应与每一行分开(每个响应用逗号分隔)。有没有办法可以用 R 或 Python 编写代码?还是我应该处理 Google 表单本身?

标签: rgoogle-forms

解决方案


这是一种方法tidyr::separate_rows

library(tidyverse)
separated.data <- data %>% 
  separate_rows(Change.in.treatment,sep = ", ")
separated.data
# A tibble: 7 x 2
  Date  Change.in.treatment   
  <chr> <chr>                 
1 1/4   Started new medication
2 1/4   changed dose          
3 1/5   Started new medication
4 1/6   Stopped medication    
5 1/6   Started new medication
6 1/6   New diagnosis         
7 1/7   New diagnosis  

从这里,您可以轻松地制作条形图ggplot

ggplot(data = separated.data, aes(x = Change.in.treatment)) +
  geom_bar(stat = "count")

在此处输入图像描述

样本数据:

data <- structure(list(Date = c("1/4", "1/5", "1/6", "1/7"), Change.in.treatment = c("Started new medication, changed dose", 
"Started new medication", "Stopped medication, Started new medication, New diagnosis", 
"New diagnosis")), class = "data.frame", row.names = c(NA, -4L
))

推荐阅读