我有一个问题,我有一组行数据,其中一些行属于一个组。
例如
Apple 0.4 0.5 0.6
Orange 0.2 0.3 0.2
Apple 0.4 0.3 0.4
Orange 0.4 0.5 0.8
Run Code Online (Sandbox Code Playgroud)
问题是如何使用 awk 自动聚合相应的列。过去,我会轻松地为每个文件手动处理以下 awk。
awk '{col2[$1]+=$2; col3[$1]+=$3; col4[$1]+=$4} END {for(i in col2){printf("%s\t%.2f\%.2f\t%.2f\n",i,col2[i]/2,col3[i]/2,col4[i]/2)}}' myfile
Run Code Online (Sandbox Code Playgroud)
但这一次我正在处理多个具有不同 NF(字段数)的文件,并且我尝试发出一个命令来自动计算该组的平均值。最终,我们将拥有
Apple 0.4 0.5 0.5
Orange 0.3 0.4 0.5
Run Code Online (Sandbox Code Playgroud)
请指教。谢谢。
我是 R 的新手,我不知道如何让 R 计算子组的平均值,而子组本身就是子组的平均值。我会解释得更清楚。
我有一个像这样的数据框:
GROUP WORD WLN
1 1 4
1 1 3
1 1 3
1 2 2
1 2 2
1 2 3
2 3 1
2 3 1
2 3 2
2 4 1
2 4 1
2 4 1
... ... ...
Run Code Online (Sandbox Code Playgroud)
但真实的一共有5组25个单词(每组5个单词;每个单词都被5个受试者分配了1到4的数字......)。
我需要获取每个单词的 WLN 平均值,我可以使用循环轻松完成此操作并将结果保存在向量中;但然后我需要一个向量,其中根据单词所属的组来表示这些平均值...所以我需要第1组的单词的平均值,然后是第2组的单词的平均值...(我不知道不知道我是否说清楚了)。
如果不一组一组地做,我怎样才能得到这个呢?
有什么方法可以聚合(折叠)这个序列
{ a, b, c, d }
Run Code Online (Sandbox Code Playgroud)
有一个函数f(x,y)所以我最终得到f(f(f(a,b),c),d)
result = f(a,b)
result = f(result, c)
result = f(result, d)
Run Code Online (Sandbox Code Playgroud)
目前我这样做(假设列表长度>= 2):
var seed = f(list[0], list[1]);
var result = list.Skip(2).Aggregate(seed, f);
Run Code Online (Sandbox Code Playgroud)
我可以用一个表达式表达同样的事情吗?
编辑:假设 的结果的类型与f元素类型不同,并且 没有好的“零元素” ,即一个好的种子值使得。零元素运算的示例包括加法(零元素= )、乘法(零元素= )、列表串联(零元素= )。ff(0, a) = a01[]
没有好的零元素的操作的一个例子是平均值,即
result = avg(a,b)
result = avg(result, c)
result = avg(result, d)
Run Code Online (Sandbox Code Playgroud)
此折叠的唯一有效种子是avg(a,a)或avg(a,b)。所以对于函数avg和输入序列{a, b, c, d}我想要result = avg(avg(avg(a,b),c),d)
我正在尝试按如下方式进行嵌套分组:
>>> df1 = pd.DataFrame({'Date': {0: '2016-10-11', 1: '2016-10-11', 2: '2016-10-11', 3: '2016-10-11', 4: '2016-10-11',5: '2016-10-12'}, 'Stock': {0: 'ABC', 1: 'ABC', 2: 'ABC', 3: 'ABC', 4: 'ABC', 5: 'XYZ'}, 'Quantity': {0: 60,1: 50, 2: 40, 3: 30, 4: 20, 5: 10}, 'UiD':{0:1,1:1,2:1,3:2,4:2,5:3}, 'StartTime': {0: '08:00:00.241', 1: '08:00:00.243', 2: '12:34:23.563', 3: '08:14.05.908', 4: '18:54:50.100', 5: '10:08:36.657'}, 'Sign':{0:1,1:1,2:0,3:-1,4:0,5:-1}, 'leg1':{0:2,1:2,2:4,3:5,4:7,5:8}})
>>> df1
Date Quantity Sign StartTime Stock UiD leg1
0 2016-10-11 60 1 08:00:00.241 ABC 1 2
1 2016-10-11 50 1 08:00:00.243 ABC …Run Code Online (Sandbox Code Playgroud) 我有两列数据:日期和因子变量。我的数据片段:
Date Category
1 2009-06-22 BREAD
2 2009-06-23 BREAD
3 2009-06-23 BREAD
4 2009-06-23 JAM
5 2009-06-23 MILK
6 2009-06-24 BREAD
9 2009-06-24 MILK
10 2009-06-25 JAM
Run Code Online (Sandbox Code Playgroud)
问题:我需要计算Category每年每个月出现的每种类型的数量。
我尝试过这样的方法,使用aggregate,但我不知道如何在那里拟合因子变量。
数据样本:这是一个可行的数据样本(更多月份和年份):http: //rextester.com/DYMXN47464 当然,我的最终(真实)数据是从 2009 年到 2018 年,每年的每个月,但那些观察太多,我无法分享全部数据。
我正在使用 mongo-go-driver ( https://godoc.org/github.com/mongodb/mongo-go-driver/mongo ),我正在尝试做相当于
db.getCollection('mycollection').aggregate([
{ $lookup: {
from: "anothercollection",
localField: "_id",
foreignField: "foreignID",
as: "matched_docs"
}},
{ $match: { "matched_docs": { $eq: [] } } },
{ $project: { "matched_docs": 0 } },
{ $match: {"dateTimeGMT":{$lt: (new Date(Date.now()-1000*60*60*24)).toISOString()}} }
])
Run Code Online (Sandbox Code Playgroud)
我不知道如何使用这种方法来放置 Javascript 命令。
pipeline := bson.NewArray(
bson.VC.DocumentFromElements(
bson.EC.SubDocumentFromElements(
//yada, yada, yada...
cursor, err := collection.Aggregate(ctx, pipeline)
Run Code Online (Sandbox Code Playgroud)
(总的来说,无论如何,我不喜欢这种方法。我希望能够在 Robo 3T 中设计查询并将它们复制到我的代码中,就像我在 MySQL Workbench 和 PHP 中所做的那样)
此方法在管道中产生一个空的 *bson.Array
pipelineJSON := `[
{ $lookup: {
from: "anothercollection",
localField: "_id",
foreignField: …Run Code Online (Sandbox Code Playgroud) 我正在与 mongo 的餐厅数据库合作
{
"_id" : ObjectId("5c66fcf59e184ea712adfba6"),
"address" : {
"building" : "97-22",
"coord" : [
-73.8601152,
40.7311739
],
"street" : "63 Road",
"zipcode" : "11374"
},
"borough" : "Queens",
"cuisine" : "Jewish/Kosher",
"grades" : [
{
"date" : ISODate("2014-11-24T00:00:00.000Z"),
"grade" : "Z",
"score" : 20
},
{
"date" : ISODate("2013-01-17T00:00:00.000Z"),
"grade" : "A",
"score" : 13
},
{
"date" : ISODate("2012-08-02T00:00:00.000Z"),
"grade" : "A",
"score" : 13
},
{
"date" : ISODate("2011-12-15T00:00:00.000Z"),
"grade" : "B",
"score" : 25
} …Run Code Online (Sandbox Code Playgroud) 位置点另存为
{
"location_point" : {
"coordinates" : [
-95.712891,
37.09024
],
"type" : "Point"
},
"location_point" : {
"coordinates" : [
-95.712893,
37.09024
],
"type" : "Point"
},
"location_point" : {
"coordinates" : [
-85.712883,
37.09024
],
"type" : "Point"
},
.......
.......
}
Run Code Online (Sandbox Code Playgroud)
有几个文件。我需要到group最近的地点。分组后第一个第二个位置将在一个文档中,第三个在第二个文档中。请注意,第一和第二的位置点不相等。两个都是最近的地方。
有什么办法吗?提前致谢。
我想在 Pandas DataFrameGroupBy 的同一列上应用两个不同的聚合,并命名新列。
我已经尝试使用文档中显示的内容。 https://pandas.pydata.org/pandas-docs/stable/user_guide/groupby.html#named-aggregation
Run Code Online (Sandbox Code Playgroud)In [82]: animals.groupby("kind").agg( ....: min_height=('height', 'min'), ....: max_height=('height', 'max'), ....: average_weight=('weight', np.mean), ....: ) ....: Out[82]: min_height max_height average_weight kind cat 9.1 9.5 8.90 dog 6.0 34.0 102.75
我正在尝试做的事情是:
df = pd.DataFrame({"year": [2001, 2001, 2001, 2005, 2005],
"value": [1, 2, 5, 3, 1]})
df = df.groupby("year").agg(sum=('value', 'sum'),
count=('value', 'size'))
Run Code Online (Sandbox Code Playgroud)
但是,这给出了以下内容:
TypeError: aggregate() missing 1 required positional argument: 'arg'
Run Code Online (Sandbox Code Playgroud) a = [1,2,3]
b = [4,5,6]
Run Code Online (Sandbox Code Playgroud)
我希望输出是 [5,7,9]
可以在纯 Python 3 中实现此目的的最简单语法是什么?