我有一个像这样的大框架:
t_stamp relaxation pit
2023-12-19T15:06:35Z FALSE -0.038911564
2023-12-19T15:06:51Z FALSE -0.037203242
2023-12-19T15:07:03Z FALSE -0.035922001
2023-12-19T15:07:19Z FALSE -0.034213679
2023-12-19T15:07:35Z FALSE -0.032505357
2023-12-19T15:07:46Z FALSE -0.031224116
2023-12-19T15:08:06Z FALSE -0.029483415
2023-12-19T15:08:14Z FALSE -0.029968068
2023-12-19T15:08:34Z FALSE -0.030740263
2023-12-19T15:08:46Z FALSE 0.073617363
2023-12-19T15:09:06Z TRUE 0.20609313249588013
2023-12-19T15:09:10Z TRUE 0.21614002653179293
2023-12-19T15:09:33Z TRUE 0.24940015375614166
2023-12-19T15:09:49Z TRUE 0.11678649167975427
2023-12-19T15:10:05Z FALSE 0.008699417
2023-12-19T15:10:17Z FALSE 0.002999872
2023-12-19T15:10:33Z FALSE -0.003341056
2023-12-19T15:10:44Z FALSE -0.008096753
2023-12-19T15:11:04Z FALSE -0.016022914
字符串
我想在每次“relaxation”列中的标签发生变化时计算“pit”列中的值的平均值。例如,对于此代码段,将创建三个汇总值:两个用于两组“pit”值,一个用于一组TRUE值。
我试着使用了来自dubur的group_by and summarize技术,但最终只创建了两个组:一个是当“relaxation”为“pit”时的“pit”值,另一个是当“relaxation”值为TRUE时的“pit”值。我想创建另一个变量来有效地对值进行分组,但找不到一个合乎逻辑的方法来做到这一点。
4条答案
按热度按时间gfttwv5a1#
data.table
字符串
s8vozzvw2#
不如这样吧:
cumsum(relaxation != lag(relaxation, default = TRUE))
创建一个数字变量,该变量以1开头,每次relaxation
在TRUE
/FALSE
之间切换时递增,允许您检测组字符串
xn1cxnb43#
使用
tapply
字符串
使用
ave
,您也可以将其作为列。型
型
lqfhib0f4#
这里有一个使用ifelse和cumsum创建分组列的解决方案。然后可以如上所述使用
group_by()
。字符串