我有一个包含1000个data.frames的列表,我需要将它们分成一个'单个' data.frame。
关键是data.frames中的每个观察(包含在列表中)都有特定的ID,这些ID必须与“单个”匹配。必须忽略data.frame和未包含在后者中的ID(因为不可能进行除法)。
此处列出了我的一个data.frames示例:
df = read.table(text = 'ID Num
D 34
W 45
Q 12
Y 45
B 11
O 2', header = TRUE)
单曲' data.frame如下:
sing_df = read.table(text = 'ID Num
D 14
Q 11
B 9', header = TRUE)
通过df
sing_df
潜水,我的输出应为:
ID Num
D 2.428
Q 1.09
B 1.22
有什么建议吗?
答案 0 :(得分:0)
我们可以通过'ID'merge
数据集,并通过将'Num.x'除以'Num.y'来创建'Num'。
transform(merge(df, sing_df, by = "ID"), Num = Num.x/Num.y)[-(2:3)]
# ID Num
#1 B 1.222222
#2 D 2.428571
#3 Q 1.090909
如果我们需要一些软件包,那么来自inner_join
的{{1}}可能会有所帮助
dplyr
由于OP提到了大约1000个数据集,最好将其保留在library(dplyr)
inner_join(df, sing_df, by = "ID") %>%
mutate(Num = Num.x/Num.y) %>%
select(-Num.x, -Num.y)
中,循环遍历list
元素并应用与上面相同的步骤
list