我有一个非常基本的问题,我有点困惑, 我有一个面板大型面板数据集,如下所示:
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/