【发布时间】:2018-01-18 16:05:40
【问题描述】:
我正在分析存储在不同月度文件中的 5 年数据。各个数据集的每个数据集应具有不同的行数和混合行(案例),但应具有相同的变量和变量名称。但是,通过查看它们,我知道有些不是,并且在将所有数据集合并到一个数据框之前,我必须对它们进行操作。有没有办法自动化识别这些过程,特别是记录我所做的更改?
例如,假设我有以下 4 个数据集:
df1 <- data.frame(id = c(1, 2, 3), age = c(10, 20, 30), color =
c("green", "purple", "gold"))
df2 <- data.frame(id = c(1, 2, 3, 4), age = c(10, 20, 30, 40), color =
c("green", "purple", "gold", "blue"))
df3 <- data.frame(id = c(1, 3, 4), age = c(10, 30, 40), colour =
c("green", "gold", "blue"), kids = c(0, 1, 1))
df4 <- data.frame(id = c(1, 2, 4), color = c("green", "purple",
"blue"), age = c(10, 20, 40))
所有 4 个数据集应该看起来像 df1 和 df2,但 df3 对一个变量(“color”)和额外变量(“kids”)有不同的拼写,而 df4 颠倒了两个变量(“age”和“颜色”)。
我可以直观地检查列号和名称以识别问题,如下所示:
df.list <- list(df1,df2,df3,df4)
df.cols <- lapply(df.list, function(x) ncol(x))
df.names <- lapply(df.list, function(x) names(x))
输出
> df.cols
[[1]]
[1] 3
[[2]]
[1] 3
[[3]]
[1] 4
[[4]]
[1] 3
> df.names
[[1]]
[1] "id" "age" "color"
[[2]]
[1] "id" "age" "color"
[[3]]
[1] "id" "age" "colour" "kids"
[[4]]
[1] "id" "color" "age"
但我有更多的变量和数据集。有没有更有效的方法来自动和可重复地识别不匹配?我只找到了比较成对数据集的方法。感谢您的任何帮助或建议!
【问题讨论】:
-
最好有一个
list的数据集,而不是在全局环境中创建多个对象。如果要获取列表中的所有对象。mget(paste0("df", 1:4))用于匹配,也许stringdist可能有用
标签: r