我在一个列表中得到了多个相同维度的 Dataframe 。所有 Dataframe 都是分类的,每个都有factorlevels。 Dataframe 的列名是相同的,通常它们具有相同的factorlevels。可能有些因子水平并不出现在所有 Dataframe 中。我需要创建一个dataframe,其中每个元素都是所有dataframe中此位置所有元素的模式(最频繁出现的元素)。如果有一个最常见的领带,那么就采取其中之一,无论是第一个,最后一个或随机一个。
这就是数据的样子,例如。df1
、df2
、df3
、df4
存储在列表df <- list(df1,df2,df3,df4)
中
df1
col1 col2 col3
1 e 6 FALSE
2 b 1 FALSE
3 d 1 TRUE
4 e 2 TRUE
5 d 5 TRUE
> df2
col1 col2 col3
1 b 2 FALSE
2 f 0 TRUE
3 e 5 FALSE
4 e 1 TRUE
5 b 1 FALSE
> df3
col1 col2 col3
1 r 0 TRUE
2 d 1 TRUE
3 d 0 FALSE
4 b 5 TRUE
5 e 2 TRUE
> df4
col1 col2 col3
1 d 5 TRUE
2 e 1 TRUE
3 b 2 FALSE
4 d 0 TRUE
5 e 5 TRUE
理想的结果是这样的。希望没有弄错,这是手工完成的。
col1 col2 col3
1 e 6 FALSE
2 b 1 TRUE
3 d 1 FALSE
4 e 2 TRUE
5 e 5 TRUE
可以使用以下代码重新创建给定的数据:
df1 = data.frame(col1 = c("e", "b", "d", "e", "d") ,
col2 = c(6, 1, 1, 2, 5),
col3= c(FALSE, FALSE, TRUE,TRUE, TRUE))
df1 <- data.frame(lapply(df1,factor))
df2 = data.frame(col1 = c("b", "f", "e", "e", "b") ,
col2 = c(2, 0, 5, 1, 1),
col3= c(FALSE, TRUE, FALSE,TRUE, FALSE))
df2 <- data.frame(lapply(df2,factor))
df3 = data.frame(col1 = c("r", "d", "d", "b", "e") ,
col2 = c(0, 1, 0, 5, 2),
col3= c(TRUE, TRUE, FALSE,TRUE, TRUE))
df3 <- data.frame(lapply(df3,factor))
df4 = data.frame(col1 = c("d", "e", "b", "d", "e") ,
col2 = c(5, 1, 2, 0, 5),
col3= c(TRUE, TRUE, FALSE,TRUE, TRUE))
df4 <- data.frame(lapply(df4,factor))
df <- list(df1,df2,df3,df4)
非常感谢您的帮助!
1条答案
按热度按时间yqyhoc1h1#
您可以在每个列表中添加一个位置列,将它们组合成一个 Dataframe ,并为每个位置查找
Mode
。