我有两个数据帧。一个是包含我需要的所有行的模板。我需要运动和模特的所有组合。另一个是我收到的输出,其中包含一些无关的行并且缺少其他行。如何合并它们以便输出数据框包含所有匹配的行(在输出中删除不必要的行并从模板中获取其他需要的行)。我希望最终的数据帧具有输出的平均值和数量,除了那些不存在的行,在这种情况下它们应该是NA。
模板
date gender licen checked sport model average amount
1 3/21/16 Man CERT 1 baseball model1 NA NA
2 3/21/16 Man CERT 1 soccer model1 NA NA
3 3/21/16 Man CERT 1 football model1 NA NA
4 3/21/16 Woman CERT 1 baseball model2 NA NA
5 3/21/16 Man CERT 1 soccer model2 NA NA
6 3/21/16 Man CERT 1 football model2 NA NA
7 3/21/16 Woman NO 1 baseball model3 NA NA
8 3/21/16 Unknown NO 1 soccer model3 NA NA
9 3/21/16 Unknown NO 1 football model3 NA NA
10 3/21/16 Woman NO 1 baseball model4 NA NA
11 3/21/16 Woman NO 1 soccer model4 NA NA
12 3/21/16 Woman NO 1 football model4 NA NA
输出:
date gender licen checked sport model average amount
1 3/21/16 Man CERT 1 baseball model1 1.2 12
2 3/21/16 Man CERT 1 soccer model1 4.1 56
3 3/21/16 Woman CERT 1 walking model2 6.5 33
4 3/21/16 Man CERT 1 soccer model2 2.4 91
5 3/21/16 Man CERT 1 football model2 1.1 14
6 3/21/16 Woman NO 1 baseball model3 3.7 56
7 3/21/16 Unknown NO 1 running model3 6.1 29
8 3/21/16 Unknown NO 1 football model3 1.0 17
9 3/21/16 Woman NO 1 baseball model4 1.6 56
10 3/21/16 Woman NO 1 football model4 2.7 32
感谢您的帮助!
答案 0 :(得分:2)
将您的数据复制粘贴到read.table
功能:
a <- read.table("clipboard", header = T) #Template
b <- read.table("clipboard", header = T) #Output
您可以使用merge
功能,但需要唯一标识符。使用interaction
构建一个。 Paste
也适用于此。
a$id <- interaction(a$sport, a$model)
b$id <- interaction(b$sport, b$model)
合并数据,并在模板df中添加所有不匹配的案例。
merge(a, b, by="id", all.x = T)
答案 1 :(得分:1)
这可能有效,假设运动模型组合在模板中是唯一的:
instance = form.save(commit=False)
if request.user.is_authenticated():
instance.user = request.user
instance.save()