【发布时间】:2021-01-03 20:12:08
【问题描述】:
我正在使用 map 函数从数据框列表中创建频率表。我想从原始数据框中导入名称列。例如,当我输入df_freq$C 时,我想看到三列,value、n 和name。对于name 列,我希望所有值都等于"C"。
# load packages and define variables
rm(list = ls())
library(purrr)
library(dplyr)
## load data
df_raw <- data.frame(name = c("C", "A", "B", "A", "B", "C"),
start = c(2, 1, 3, 4, 5, 2),
end = c(7, 6, 7, 8, 10, 9))
df <- df_raw %>%
split(.$name) %>% # split data by name
imap(function(x, x_name) {
data.frame(value = Map(seq.int, x$start, x$end) %>% unlist,
name = x_name) })
## create frequency plot with name column
df_freq <- df %>%
map(., ~count(.x, value))```
【问题讨论】:
标签: r dataframe dplyr pipe purrr