在R中列出数据帧的不同对象长度
我有一个10列的列表,每个元素有2列。一个是年份(2001-2018),另一个是观察。因为第一个和第二个物体缺了几年(因此长度只有14或16年而不是18年),其他的都是完整的(长度为18年) 我的名单:在R中列出数据帧的不同对象长度,r,list,dataframe,R,List,Dataframe,我有一个10列的列表,每个元素有2列。一个是年份(2001-2018),另一个是观察。因为第一个和第二个物体缺了几年(因此长度只有14或16年而不是18年),其他的都是完整的(长度为18年) 我的名单: list <- (A, B, C, D) A = data.frame (Year = c(2001, 2003), Observ = c(1,3) B = data.frame (Year = c(2002, 2003, 2018), Observ = c(2,8,3) C = dat
list <- (A, B, C, D)
A = data.frame (Year = c(2001, 2003), Observ = c(1,3)
B = data.frame (Year = c(2002, 2003, 2018), Observ = c(2,8,3)
C = data.frame (Year = c(2001, 2002, 2003, ..., 2018), Observ = c(4,3,2,5)
D = data.frame (Year = c(2001, 2002, 2003, ..., 2018), Observ = c(17,1, 11, 2)
一种方法是
合并
数据帧列表。如果您的列表被称为list\u df
,您可以执行以下操作:
Reduce(function(x, y) merge(x, y, by = 'Year', all = TRUE), list_df)
# Year Obser1 Obser2
#1 2000 1 1
#2 2001 2 2
#3 2002 3 3
#4 2003 4 NA
tidyverse
上述替代方案
library(dplyr)
library(purrr)
list_df %>% reduce(full_join, by = 'Year')
数据
在这个小样本上测试:
df1 <- data.frame(Year = 2000:2003, Obser1 = 1:4)
df2 <- data.frame(Year = 2000:2002, Obser2 = 1:3)
list_df <- list(df1, df2)
df1帮助我们帮助您:提供一个。特别是,请将您的问题包括R命令的输出dput(mydata)
,其中您将mydata
替换为您在这里谈论的对象的名称。您可以查阅更多详细信息。x和y是什么?x
和y
是Reduce
中匿名函数的参数。
df1 <- data.frame(Year = 2000:2003, Obser1 = 1:4)
df2 <- data.frame(Year = 2000:2002, Obser2 = 1:3)
list_df <- list(df1, df2)