r - 计算变量按组改变分数的次数

标签 r count data-manipulation

我有一个非常基本的问题,我有点困惑, 我有一个面板大型面板数据集,如下所示:

df <- data.frame(id= c(1,1,1,2,2,2,3,3,3,4,4,4), time=c(1,2,3,1,2,3,1,2,3,1,2,3), x = c(0,0,0,0,1,1,0,0,1,0,1,2))

我想找到一种紧凑的方法来计算每个 id 的 x 变量更改次数。 最终的数据集应该看起来像这样

df <- data.frame(id= c(1,1,1,2,2,2,3,3,3,4,4,4), time=c(1,2,3,1,2,3,1,2,3,1,2,3), x = c(0,0,0,0,1,1,0,0,1,0,1,2),count= c(0,0,0,1,1,1,1,1,1,2,2,2))

理想情况下我想使用 dplyr

我想我应该做类似的事情

library(dplyr)
df <- df %>% group_by(id) %>% mutate(count=)

但是我不知道如何完成它,因为我不知道可以使用什么样的命令来计算分数的变化。

提前非常感谢您的帮助

最佳答案

您可以使用 x 的滞后差之和不等于零:

library(dplyr)

 df %>% 
   group_by(id) %>%
   mutate(count = sum(diff(x) != 0))

   id time x count
1   1    1 0     0
2   1    2 0     0
3   1    3 0     0
4   2    1 0     1
5   2    2 1     1
6   2    3 1     1
7   3    1 0     1
8   3    2 0     1
9   3    3 1     1
10  4    1 0     2
11  4    2 1     2
12  4    3 2     2

关于r - 计算变量按组改变分数的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58877603/

相关文章:

r - 绘图窗口在最小化时消失

java - 用户在java中重复输入多少次int

r - R data.table 中的分组计数聚合

R带有data.table的多个列的多个统计信息

R 将列出的矩阵中的行附加到矩阵/数据帧,同时跳过缺失值

根据下一行删除重复项

r - 无法使用map_dbl进行总结

r - 使用 R 折叠数据框中的行

mysql - 计算标准化表中的记录数

r - 如何编写函数来改变字符串并进行算术运算