【发布时间】:2018-01-15 08:11:39
【问题描述】:
我正在处理在两个时间点从受访者那里收集的数据。每个受访者的每个数据集都存储为一个单独的文件。我有 42 位受访者,所以我总共有 84 个文件。我已将所有这些文件编译成一个 84 元素列表,其中列表的每个元素都是一个数据框。
由于文件的命名方式,列表的第一个元素包含受访者 A 的第一个时间点的数据,第二个元素包含受访者 A 的第二个时间点的数据。第三个元素包含数据来自被调查者 B 的第一个时间点的数据,第四个元素包含来自被调查者 B 的第二个时间点的数据。以此类推。
我试图弄清楚如何创建一个循环来合并第一个和第二个元素、第三个和第四个元素等,以便我的 84 元素列表减少到 42 元素列表。
这是一些示例代码。在此示例中,每个受访者由向量“ID”中的值表示,受访者的锻炼伙伴列在向量“Names”中,这些锻炼伙伴的体重列在向量“Weight”和“Weight2”中:
Names <- c("Kevin", "Rich", "Frank")
ID <- c("A1", "A1", "A1")
Weight <- c(159, 200, 186)
df1 <- data.frame(ID, Names, Weight)
Names <- c("Kevin", "Rich", "Frank", "Kip", "Earl")
ID <- c("A1", "A1", "A1", "A1", "A1")
Weight2 <- c(170, 180, 190, 240, 255)
df2 <- data.frame(ID, Names, Weight2)
Names <- c("Sam", "Tim", "Bill", "Bobby")
ID <- c("B2", "B2", "B2", "B2")
Weight <- c(105, 155, 177, 310)
df3 <- data.frame(ID, Names, Weight)
Names <- c("Sam", "Eric", "Donald")
ID <- c("B2", "B2", "B2")
Weight2 <- c(120, 100, 205)
df4 <- data.frame(ID, Names, Weight2)
example_list <- list(df1, df2, df3, df4)
example_merge1 <- merge.data.frame(df1, df2, by.x = "Names", by.y = "Names", all = TRUE)
example_merge2 <- merge.data.frame(df3, df4, by.x = "Names", by.y = "Names", all = TRUE)
我的列表看起来类似于上面标记为“example_list”的代码中创建的列表,我试图弄清楚如何在列表对象上运行合并循环,以便它创建出现在“example_merge1”中的合并数据框" 和 "example_merge2"。
【问题讨论】: