我想计算数据框中的组平均值,并在包含这些组平均值的原始数据框中创建一个新列。(我正在进行重复性研究,我想要新列中插入、单元和通道内测量的平均值,以便我可以将其减去并计算残差。)
我的数据:
> head(mytestdata,15)
Insertion Measurement Unit Channel Value
1 1 1 A5 10 9.41
2 1 1 A5 11 9.51
3 1 1 A5 12 10.59
4 1 1 A5 13 9.45
5 1 2 A5 10 9.42
6 1 2 A5 11 9.03
7 1 2 A5 12 10.62
8 1 2 A5 13 9.39
9 1 3 A5 10 9.38
10 1 3 A5 11 9.87
11 1 3 A5 12 11.34
12 1 3 A5 13 …Run Code Online (Sandbox Code Playgroud) 我有以下数据框:
a <- c(1,1,4)
b <- c(1,0,2)
c <- data.frame(a=a,b=b)
str(c)
# a b
#1 1 1
#2 1 0
#3 4 2
Run Code Online (Sandbox Code Playgroud)
我想按以下方式聚合数据框 c:
aggregate(b~a,FUN=mean,data=c)
# a b
#1 1 0.5
#2 4 2.0
Run Code Online (Sandbox Code Playgroud)
但是,我的主要问题是我将使用变量作为列的名称
所以:
d <- 'a'
Run Code Online (Sandbox Code Playgroud)
如果我尝试使用包含列名称的变量 d 进行聚合,显然会收到错误:
aggregate(b~d,FUN=mean,data=c)
#Error in model.frame.default(formula = b ~ d, data = c) : variable lengths differ (found for 'd')
Run Code Online (Sandbox Code Playgroud)
这可行,但我随后得到了愚蠢的列名称。我想避免重命名列的额外步骤:
aggregate(c[,'b']~c[,d],FUN=mean,data=c)
# c[, d] c[, "b"]
#1 1 0.5
#2 4 2.0
Run Code Online (Sandbox Code Playgroud)
如何聚合并在第一次尝试时获得正确的列名称?(也许没有办法做到这一点)
从以下数据帧 df1 可以看出
Branch Loan_Amount TAT
A 100 2.0
A 120 4.0
A 300 9.0
B 150 1.5
B 200 2.0
Run Code Online (Sandbox Code Playgroud)
我可以使用聚合函数将以下输出作为数据帧 df2 获取
Branch Number_of_loans Loan_Amount Total_TAT
A 3 520 15.0
B 2 350 3.5
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用 nrow 来计算 number_of_loans 并合并,但我正在寻找更好的方法。
我正在尝试使用 dplyr 查找数据帧上变量的平均长度:
x <- data %>% group_by(Date, `% Bucket`) %>% summarise(count = n())
Date % Bucket count
(date) (fctr) (int)
1 2015-01-05 <=1 1566
2 2015-01-05 (1-25] 421
3 2015-01-05 (25-50] 461
4 2015-01-05 (50-75] 485
5 2015-01-05 (75-100] 662
6 2015-01-05 (100-150] 1693
7 2015-01-05 >150 12359
8 2015-01-13 <=1 1608
9 2015-01-13 (1-25] 441
10 2015-01-13 (25-50] 425
Run Code Online (Sandbox Code Playgroud)
如何汇总以找出% Bucket一年中每一年的平均值dplyr?
in base:
x <- as.data.frame(x)
aggregate(count ~ `% Bucket`, data = x, FUN=mean) …Run Code Online (Sandbox Code Playgroud) 我有以下数据框my_df:
name numbers
----------------------
A [4,6]
B [3,7,1,3]
C [2,5]
D [1,2,3]
Run Code Online (Sandbox Code Playgroud)
我想将所有数字合并到一个新列表中,因此输出应该是:
new_numbers
---------------
[4,6,3,7,1,3,2,5,1,2,3]
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
def combine_list(my_lists):
new_list = []
for x in my_lists:
new_list.append(x)
return new_list
new_df = my_df.agg({'numbers': combine_list})
Run Code Online (Sandbox Code Playgroud)
但new_df看起来仍然和原来的一样:
numbers
----------------------
0 [4,6]
1 [3,7,1,3]
2 [2,5]
3 [1,2,3]
Run Code Online (Sandbox Code Playgroud)
我做错了什么?我该如何制作new_df:
new_numbers
---------------
[4,6,3,7,1,3,2,5,1,2,3]
Run Code Online (Sandbox Code Playgroud)
谢谢!
我们用这个mtcars来说明一下情况。
我想要做的与下面的多列相同。qsec获得一列(在示例中)相对于具有特定值(4 和 6,在下面的示例中)的另一列的平均值。我稍后会比较结果,所以也许我会将结果存储在向量中
table(mtcars$cyl)
4 6 8
11 7 14
mean(mtcars$qsec[mtcars$cyl == 4], na.rm = T)
mean(mtcars$qsec[mtcars$gear == 4], na.rm = T)
Run Code Online (Sandbox Code Playgroud)
我想检查qsec关于的方法cyl,让我们说gear和carb,对于均值具有相同的“模式”,即观察值的平均值为 4 和观察值的平均值为 6。在真实的数据集中,将有几列具有相同的集合数字(2、0 和 1)。我将比较列的均值(在示例中qsec)与观测值 2 和 0。
我尝试查看诸如tapply, apply,之类的函数sapply。但我坚持将条件平均应用于每一列(一次)。
希望我说清楚了。谢谢你!
我一直在寻找现有的 R 函数,用于聚合同一图层内共享公共边界的多边形要素(即,生成类似于 ArcGIS 中的“溶解边界”工具的输出)。
我使用 gdal_polygonizeR ( https://johnbaumgartner.wordpress.com/2012/07/26/getting-rasters-into-shape-from-r/ )从光栅文件创建了一个多边形图层。一些多边形形状由单个栅格单元分隔,因此在形状文件中存储为不同的特征。我想将此类多边形特征组合成单个多边形特征,并创建一个新的形状文件(减少多边形元素的总数),最好具有溶解的阈值距离。
有谁知道 R 中现有的方法可以做到这一点?
更新:我认为解决方案可能涉及aggregate,然后是disaggregate。我目前正在探索这一点,特别注意确保带有孔的多边形要素与父多边形保持关联(请参阅:分割单个 SpatialPolygons 对象的多边形部分)。如果/当我找到解决方案时将再次更新。
我是 mongodb 的新手,在使用聚合函数时陷入困境。我的查询是 -> 我想根据我在仪表板中应用的过滤器来过滤数据库记录。如何使用 $match 运算符添加过滤器值?它应该在过滤器值存在时应用,如果不可用则忽略。
if (req.body.filterSet !== undefined) {
const filterData = req.body.filterSet[0];
var violation_id = filterData.violation_id;
var start_notice = filterData.start_notice;
var end_notice = filterData.end_notice;
var rc_number = filterData.rc_number;
var circle = filterData.circle;
var start_date = filterData.start_date;
var end_date = filterData.end_date;
var status = filterData.status;
var source = filterData.source;
var sms_status = filterData.sms_status;
var notice_status = filterData.notice_status;
}
Complaint.aggregate([
{ $match : { is_active : { $eq : 1 } } },
{ $match : { id …Run Code Online (Sandbox Code Playgroud) 我有一个包含可重复值数组的字段的文档。我想使用与该数组的唯一值相对应的额外字段来转换这些文档。我尝试了aggregate + addToSet但没有成功。
数据:
{..., "random_integers" : [1, 1, 2, 2, 3, 3]},
{..., "random_integers" : [2, 3, 4, 4, 5, 6]},
{..., "random_integers" : [9, 9, 8, 8, 7, 7]}
Run Code Online (Sandbox Code Playgroud)
期待:
{
...
"random_integers" : [1, 1, 2, 2, 3, 3],
"unique_integers" : [1, 2, 3],
},
{
...
"random_integers" : [2, 3, 4, 4, 5, 6],
"unique_integers" : [2, 3, 4, 5, 6],
},
{
...
"random_integers" : [9, 9, 8, 8, 7, 7],
"unique_integers" : …Run Code Online (Sandbox Code Playgroud) 我的课程集合有这个嵌套架构,每个课程中有一个会话数组,每个会话中有一个学生数组,每个学生都是一个对象,由 userName 的属性和引用我的用户集合的 ObjectId 值和另一个属性组成名称包含一些数字的状态。
我想从会话的学生数组中删除一个学生对象及其 _id。
我知道可以展开数组来获取单个对象,但我需要一种巧妙的方法,例如使用 objectId 从数据库中删除对象,这样我们就不必指定路径,例如直接删除或修改嵌套子文档。
这是我的课程架构:
CourseSchema = new mongoose.Schema({
name:String,
sessions:[
{
date:Date,
students :[{
userName:{
type:mongoose.Schema.Types.ObjectId,
ref :'users'
},
status:Number
}]
}
]
})
Run Code Online (Sandbox Code Playgroud)