【发布时间】:2020-11-20 15:03:53
【问题描述】:
我有几个数据框,其中包含有关临时订购案例的信息和一个补充变量。我想合并数据帧以获得单个帧,其中情况仍按时间顺序排列并与正确的变量值相关联。
一个最小的工作示例是:
Cases <- c("Flanders", "Flanders", "Wallonia", "Wallonia")
From <- c(1830, 1900, 1830, 1950)
To <- c(1899, 2020, 1949, 2020)
Variable1 <- c(0, 1, 0, 1)
Variable1.df <- data.frame(Cases, From, To, Variable1)
Cases <- c("Flanders", "Flanders", "Flanders", "Wallonia", "Wallonia", "Wallonia")
From <- c(1830, 1871, 1946, 1830, 1931, 1976)
To <- c(1870, 1945, 2020, 1930, 1975, 2020)
Variable2 <- c(0, 1, 0, 0, 0, 1)
Variable2.df <- data.frame(Cases, From, To, Variable2)
Cases <- c("Flanders", "Flanders", "Flanders", "Flanders", "Flanders", "Wallonia", "Wallonia", "Wallonia", "Wallonia", "Wallonia")
From <- c(1830, 1850, 1900, 1950, 2000, 1830, 1850, 1900, 1950, 2010)
To <- c(1849, 1899, 1949, 1999, 2020, 1849, 1899, 1949, 2009, 2020)
Variable3 <- c(0, 1, 0, 0, 1, 0, 1, 0, 0, 1)
Variable3.df <- data.frame(Cases, From, To, Variable3)
我正在寻找的输出将是:
Cases From To Variable1 Variable2 Variable3
Flanders 1830 1849 0 0 0
Flanders 1850 1870 0 0 1
Flanders 1871 1899 0 1 1
Flanders 1900 1945 1 1 0
Flanders 1946 1999 1 0 0
Flanders 2000 2020 1 0 1
...
Wallonia 2010 2020 1 1 1
由于我必须多次重复该操作并更改要合并的数据帧数量,因此我想创建一个函数。有人可以帮我解决这个问题吗?提前致以诚挚的谢意。
【问题讨论】:
-
你需要
Reduce(function(x, y) merge(x, y, all = TRUE), list(Variable1.df, Variable2.df, Variable3.df))吗? -
非常感谢您的帮助。这也朝着正确的方向发展,但是当我运行代码时,输出也与我寻求的不对应(见上文):有多个 Flanders 1830-xxxx 并且行不匹配(对于每一行,两个变量包含 NA。
标签: r dataframe merge chronological