计算使用R在列中更改值的次数

时间:2017-04-13 06:05:30

标签: r

嗨我想计算一下这个组中一个列中的值变化了多少次以及一个组中有多少个唯一值,我想得到我想要的东西,但它有一个我不想要的NA观察值被计算在内。

df <- data.frame(x=c("a",'a', "a", "b",'b', "b", "c",'c', "d")
                 ,y=c(1,2,NA,3,3,3,2,1,5))
library(data.table) #data.table_1.9.5
setDT(df)[, wanted := rleid(y), by=x][]
setDT(df)[, count := uniqueN(y),by=x][]



   x  y wanted count
1: a  1      1     3
2: a  2      2     3
3: a NA      3     3
4: b  3      1     1
5: b  3      1     1
6: b  3      1     1
7: c  2      1     2
8: c  1      2     2
9: d  5      1     1`

Desired results:

   x  y wanted count
1: a  1      1     2
2: a  2      2     2
3: a NA      2     2
4: b  3      1     1
5: b  3      1     1
6: b  3      1     1
7: c  2      1     2
8: c  1      2     2
9: d  5      1     1

我试过rleid(!is.na(y))但似乎没有像我预期的那样工作。谢谢。

1 个答案:

答案 0 :(得分:1)

我们可以使用之前的非NA元素(na.locf)替换NA元素,在其上使用rleid获取“想要的”并获取length的{​​{1}} 1}}不是unique的元素来获取'count'

NA