提取多个名称的日期出现次数
Extraction of date occurrences for multiple names
我正在尝试从此电子表格中提取信息(请参阅示例文件)。我有多张这样的床单。我需要记录事件(H、HI 等)发生的名称和每个日期。我正在整理一个主数据集(类似于最终文件中显示的数据集)。列出每个日期以及姓名和字母代码(方式)。
我一直在尝试使用拆分功能。但它为我提供了没有帮助的列表。
谢谢,
乔丹
示例数据
Feb-15
NAME 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
Name 1 H H H H H HI H H H H H H
Name 2 H H H H H H H H H H C H H H H H H
Name 3 H H H H H H H H H H H H H H H H H H H H H H H H
Name 4 H H H H H H H H H H H H H H H H H H H H
Name 5 H H H H H H H H H H H H
Name 6 HA HA HA HI HI HI HI HI HI HI HI HI HI HI HI HI HI HI HI HI HI HI HI HI HI
Name 7 C
Name 8 C
Name 9 HA HA
Name 10 HI HI HI HI HI HI HI
期望的最终结果
name date modality
Name 1 2-Feb-15 H
Name 1 4-Feb-15 H
Name 1 6-Feb-15 H
Name 1 9-Feb-15 H
Name 1 11-Feb-15 H
Name 1 13-Feb-15 HI
Name 1 16-Feb-15 H
Name 1 18-Feb-15 H
Name 1 20-Feb-15 H
Name 1 23-Feb-15 H
Name 1 25-Feb-15 H
Name 1 27-Feb-15 H
Name 2 2-Feb-15 H
Name 2 4-Feb-15 H
Name 2 5-Feb-15 H
Name 2 7-Feb-15 H
Name 2 9-Feb-15 H
Name 2 10-Feb-15 H
Name 2 12-Feb-15 H
Name 2 14-Feb-15 H
Name 2 16-Feb-15 H
Name 2 17-Feb-15 H
Name 2 18-Feb-15 C
Name 2 19-Feb-15 H
Name 2 21-Feb-15 H
Name 2 23-Feb-15 H
Name 2 24-Feb-15 H
Name 2 26-Feb-15 H
Name 2 28-Feb-15 H
期望的结果只显示前 2 个名字和所有发生的日期,需要为所有人完成此操作
您希望解决从 wide form to long form 转换数据的常见问题。这可以通过 tidyr
包(tidyverse 的一部分)中的 gather
函数来完成。
这是一种将其用于您的数据的方法,以及来自 dplyr
包的一些额外调用以帮助格式化它:
library(dplyr)
library(tidyr)
df <- read.table(text="
NAME 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
Name.1 NA H NA H NA H NA NA H NA H NA HI NA NA H NA H NA H NA NA H NA H NA H NA
Name.2 NA H NA H H NA H NA H H NA H NA H NA H H C H NA H NA H H NA H NA H
Name.3 NA H H H H H H NA H H H H H H NA H H H H H H NA H H H H H H
Name.4 NA H H H NA H H NA H H H NA H H NA H H H H NA H NA H H H NA H H
Name.5 NA NA H NA NA H H NA NA H NA H NA H NA NA H NA H NA H NA NA H NA H NA H
Name.6 NA NA NA HA HA HA HI HI HI HI HI HI HI HI HI HI HI HI HI HI HI HI HI HI HI HI HI HI
Name.7 NA NA NA NA NA NA NA NA NA NA NA NA C NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
Name.8 NA NA NA NA NA C NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
Name.9 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA HA HA
Name.10 NA HI HI HI HI HI NA NA HI HI NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA", header = T)
mon.yr <- "Feb-15"
df <- gather(df, key = "date", value = "modality", 2:ncol(df)) %>%
filter(!is.na(modality)) %>%
mutate(date = sub('X(\d+)', paste0('\1-', mon.yr), date)) %>%
arrange(NAME)
在 运行 之后我们有:
> head(df)
NAME date modality
1 Name.1 2-Feb-15 H
2 Name.1 4-Feb-15 H
3 Name.1 6-Feb-15 H
4 Name.1 9-Feb-15 H
5 Name.1 11-Feb-15 H
6 Name.1 13-Feb-15 HI
我正在尝试从此电子表格中提取信息(请参阅示例文件)。我有多张这样的床单。我需要记录事件(H、HI 等)发生的名称和每个日期。我正在整理一个主数据集(类似于最终文件中显示的数据集)。列出每个日期以及姓名和字母代码(方式)。
我一直在尝试使用拆分功能。但它为我提供了没有帮助的列表。
谢谢, 乔丹
示例数据
Feb-15
NAME 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
Name 1 H H H H H HI H H H H H H
Name 2 H H H H H H H H H H C H H H H H H
Name 3 H H H H H H H H H H H H H H H H H H H H H H H H
Name 4 H H H H H H H H H H H H H H H H H H H H
Name 5 H H H H H H H H H H H H
Name 6 HA HA HA HI HI HI HI HI HI HI HI HI HI HI HI HI HI HI HI HI HI HI HI HI HI
Name 7 C
Name 8 C
Name 9 HA HA
Name 10 HI HI HI HI HI HI HI
期望的最终结果
name date modality
Name 1 2-Feb-15 H
Name 1 4-Feb-15 H
Name 1 6-Feb-15 H
Name 1 9-Feb-15 H
Name 1 11-Feb-15 H
Name 1 13-Feb-15 HI
Name 1 16-Feb-15 H
Name 1 18-Feb-15 H
Name 1 20-Feb-15 H
Name 1 23-Feb-15 H
Name 1 25-Feb-15 H
Name 1 27-Feb-15 H
Name 2 2-Feb-15 H
Name 2 4-Feb-15 H
Name 2 5-Feb-15 H
Name 2 7-Feb-15 H
Name 2 9-Feb-15 H
Name 2 10-Feb-15 H
Name 2 12-Feb-15 H
Name 2 14-Feb-15 H
Name 2 16-Feb-15 H
Name 2 17-Feb-15 H
Name 2 18-Feb-15 C
Name 2 19-Feb-15 H
Name 2 21-Feb-15 H
Name 2 23-Feb-15 H
Name 2 24-Feb-15 H
Name 2 26-Feb-15 H
Name 2 28-Feb-15 H
期望的结果只显示前 2 个名字和所有发生的日期,需要为所有人完成此操作
您希望解决从 wide form to long form 转换数据的常见问题。这可以通过 tidyr
包(tidyverse 的一部分)中的 gather
函数来完成。
这是一种将其用于您的数据的方法,以及来自 dplyr
包的一些额外调用以帮助格式化它:
library(dplyr)
library(tidyr)
df <- read.table(text="
NAME 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
Name.1 NA H NA H NA H NA NA H NA H NA HI NA NA H NA H NA H NA NA H NA H NA H NA
Name.2 NA H NA H H NA H NA H H NA H NA H NA H H C H NA H NA H H NA H NA H
Name.3 NA H H H H H H NA H H H H H H NA H H H H H H NA H H H H H H
Name.4 NA H H H NA H H NA H H H NA H H NA H H H H NA H NA H H H NA H H
Name.5 NA NA H NA NA H H NA NA H NA H NA H NA NA H NA H NA H NA NA H NA H NA H
Name.6 NA NA NA HA HA HA HI HI HI HI HI HI HI HI HI HI HI HI HI HI HI HI HI HI HI HI HI HI
Name.7 NA NA NA NA NA NA NA NA NA NA NA NA C NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
Name.8 NA NA NA NA NA C NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
Name.9 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA HA HA
Name.10 NA HI HI HI HI HI NA NA HI HI NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA", header = T)
mon.yr <- "Feb-15"
df <- gather(df, key = "date", value = "modality", 2:ncol(df)) %>%
filter(!is.na(modality)) %>%
mutate(date = sub('X(\d+)', paste0('\1-', mon.yr), date)) %>%
arrange(NAME)
在 运行 之后我们有:
> head(df)
NAME date modality
1 Name.1 2-Feb-15 H
2 Name.1 4-Feb-15 H
3 Name.1 6-Feb-15 H
4 Name.1 9-Feb-15 H
5 Name.1 11-Feb-15 H
6 Name.1 13-Feb-15 HI