Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用R在文件夹中的文件之间映射_df时出错_R_Csv_Tidyverse_Purrr - Fatal编程技术网

使用R在文件夹中的文件之间映射_df时出错

使用R在文件夹中的文件之间映射_df时出错,r,csv,tidyverse,purrr,R,Csv,Tidyverse,Purrr,因此,我有一个文件夹的文件,每个“几乎”相同的CSV的。它们看起来都像: EMP ID WORK DATE WORK HOURS JOB TITLE MGMT CTR 002 01/02/2019 8 Janitor 44 003 01/03/2019 29 Analyst 044 004 01/02/2019 400 Barber 2

因此,我有一个文件夹的文件,每个“几乎”相同的CSV的。它们看起来都像:

EMP ID  WORK DATE   WORK HOURS   JOB TITLE  MGMT CTR
  002    01/02/2019          8     Janitor        44
  003    01/03/2019         29     Analyst       044
  004    01/02/2019        400      Barber         2
   ...
我之所以这么说,几乎是因为其中一些变量有几个额外的变量,但我只关心其中两个

使用以下代码,理论上我可以根据
工作日期
工作时间
(我关心的两个变量)将它们组合并分组

并得到一个类似的错误:

Error: Can't combine `MGMT CTR` <double> and `MGMT CTR` <character>.
错误:无法组合“管理中心”和“管理中心”。

实际上,我只关心这两个变量,只要
工作日期
是一个字符或日期,
工作时间
是一个整数,我们就可以了。

问题在于某些数据集的列与类型不匹配。一个选项将转换为
map_df
中的单个类型,然后更改类型

library(dplyr)
library(purrr)
library(readr)
library(lubridate)
list.files(path = "path", full.names = TRUE) %>%
     map_dfr(~ read_csv(.x) %>% 
                  mutate(across(everything(), as.character))) %>% 
     select(`WORK DATE`,`WORK HRS`) %>% 
     type.convert(as.is = TRUE) %>%
     group_by(`WORK DATE` = mdy(`WORK DATE`)) %>%
     summarize(hour_sum = sum(`WORK HRS`)) # assume that "WORK HRS" is numeric

好了,修好了!但是现在我有了这个名为“test”的df,如何将“WORK DATE”作为日期格式?@JohnThomas是月-日-年或日-月-日-年-日-年的格式,因此2019年1月1日在
映射中选择
可能更好
test <- list.files(path = "path", full.names = TRUE) %>%
    map_dfr(read_csv) %>%
    select(`WORK DATE`,`WORK HRS`) %>% 
  group_by(`WORK DATE`) %>%
    summarize(hour_sum = sum(`WORK HRS`)) 
Error: Can't combine `MGMT CTR` <double> and `MGMT CTR` <character>.
library(dplyr)
library(purrr)
library(readr)
library(lubridate)
list.files(path = "path", full.names = TRUE) %>%
     map_dfr(~ read_csv(.x) %>% 
                  mutate(across(everything(), as.character))) %>% 
     select(`WORK DATE`,`WORK HRS`) %>% 
     type.convert(as.is = TRUE) %>%
     group_by(`WORK DATE` = mdy(`WORK DATE`)) %>%
     summarize(hour_sum = sum(`WORK HRS`)) # assume that "WORK HRS" is numeric