嗨我想计算一下这个组中一个列中的值变化了多少次以及一个组中有多少个唯一值,我想得到我想要的东西,但它有一个我不想要的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))
但似乎没有像我预期的那样工作。谢谢。
答案 0 :(得分:1)
我们可以使用之前的非NA元素(na.locf
)替换NA元素,在其上使用rleid
获取“想要的”并获取length
的{{1}} 1}}不是unique
的元素来获取'count'
NA