无法合并 X <character> 和 X <double>
Can't Combine X <character> and X <double>
我正在尝试使用以下方法将各种 .csv 文件合并到一个数据框中:
df<- list.files(path = "C:/Users...", pattern = "*.csv", full.names = TRUE) %>% lapply(read_csv) %>% bind_rows clean
但是,我收到一条错误消息,提示我无法组合 X 字符变量和 X 双精度变量。
有没有办法可以将其中一个转换为字符或双变量?
由于每个 csv 文件都略有不同,从我的初学者的角度来看,相信 lapply 在这种情况下是最好的,除非有更简单的方法来解决这个问题。
感谢大家的时间和关注!
您可以在所有文件中将 X
变量更改为字符。您还可以使用 map_df
将所有文件合并到一个数据框中。
library(tidyverse)
result <- list.files(path = "C:/Users...", pattern = "*.csv", full.names = TRUE) %>%
map_df(~read_csv(.x) %>% mutate(X = as.character(X)))
如果有更多列存在类型不匹配问题,您可以将所有列更改为字符,合并数据并使用 type_convert
更改它们的 class.
result <- list.files(path = "C:/Users...", pattern = "*.csv", full.names = TRUE) %>%
map_df(~read_csv(.x) %>% mutate(across(.fns = as.character))) %>%
type_convert()
如果所有文件的列数相同,则尝试 plyrr::rbind.fill 而不是 dplyr::bind_rows.
list.files(path = "C:/Users...", pattern = "*.csv", full.names = TRUE) %>% lapply(read_csv) %>% plyrr::rbind.fill
我正在尝试使用以下方法将各种 .csv 文件合并到一个数据框中:
df<- list.files(path = "C:/Users...", pattern = "*.csv", full.names = TRUE) %>% lapply(read_csv) %>% bind_rows clean
但是,我收到一条错误消息,提示我无法组合 X 字符变量和 X 双精度变量。 有没有办法可以将其中一个转换为字符或双变量?
由于每个 csv 文件都略有不同,从我的初学者的角度来看,相信 lapply 在这种情况下是最好的,除非有更简单的方法来解决这个问题。
感谢大家的时间和关注!
您可以在所有文件中将 X
变量更改为字符。您还可以使用 map_df
将所有文件合并到一个数据框中。
library(tidyverse)
result <- list.files(path = "C:/Users...", pattern = "*.csv", full.names = TRUE) %>%
map_df(~read_csv(.x) %>% mutate(X = as.character(X)))
如果有更多列存在类型不匹配问题,您可以将所有列更改为字符,合并数据并使用 type_convert
更改它们的 class.
result <- list.files(path = "C:/Users...", pattern = "*.csv", full.names = TRUE) %>%
map_df(~read_csv(.x) %>% mutate(across(.fns = as.character))) %>%
type_convert()
如果所有文件的列数相同,则尝试 plyrr::rbind.fill 而不是 dplyr::bind_rows.
list.files(path = "C:/Users...", pattern = "*.csv", full.names = TRUE) %>% lapply(read_csv) %>% plyrr::rbind.fill