【问题标题】:Multiple identical columns in multiple data frames - R多个数据框中的多个相同列 - R
【发布时间】:2023-03-25 21:30:01
【问题描述】:

我有四个data frames,其中一个类似的列名为“类型”。

df1 <- data.frame(Type = c('A','B','C','D','E','F'))
df2 <- data.frame(Type = c('A','B','C','D','E','F'))
df3 <- data.frame(Type = c('A','B','C','D','E','F'))
df4 <- data.frame(Type = c('A','Z','C','D','E','F'))

我想检查此列是否与所有data frames 相同。

目前我正在使用以下方法一次检查两个数据帧:

as.integer(as.logical(identical(df1$Type, df2$Type)))

如果相同,则为 1,否则为 0。

我想像这样执行一行:

as.integer(as.logical(identical(df1$Type, df2$Type, df3$Type, df4$Type)))

但是identical一次只能处理2列。

我也发现了这个Testing for multiple identical columns in R,但这仅适用于data frame 中的列。

【问题讨论】:

  • 你可以做length(unique(list(df1, df2, df3, df4))) == 1假设数据框中的单个变量与你的例子一样共享一个通用名称。

标签: r dataframe compare multiple-columns


【解决方案1】:

您可以使用从数据框中提取Type 列并将任何一个元素与所有元素进行比较。

list_df <- mget(paste0('df', 1:4))
#Or manually creating a list
#list_df <- list(df1, df2, df3, df4)

tmp <- lapply(list_df, `[[`, 'Type')
all(sapply(tmp, function(x) all(x == tmp[[1]])))
#[1] FALSE

【讨论】:

  • 我更改了df4,因此所有 4 个数据帧都相同,并使用了您的解决方案 Reduce(function(x, y) all(x == y), lapply(list(df1, df2, df3, df4), `[[`, 'Type')),但它仍然返回值 FALSE
  • 抱歉,搞砸了。我希望更新有所帮助。 @ConnorUhl 。谢谢 27 φ 9
  • 无需道歉 ;) 我一直非常感谢您的帮助!!! @Ronak Shah
猜你喜欢
  • 2020-09-28
  • 1970-01-01
  • 2021-11-29
  • 2020-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-27
  • 2013-12-08
相关资源
最近更新 更多