gpt4 book ai didi

r - 计数对字符向量内容的更改

转载 作者:行者123 更新时间:2023-12-02 06:16:30 26 4
gpt4 key购买 nike

我有一个 data_frame 字符变量 x 随时间变化。我想计算它改变的次数,并用这个计数填充一个新的向量。

df <- data_frame(
x = c("a", "a", "b", "b", "c", "b"),
wanted = c(1, 1, 2, 2, 3, 4)
)
x wanted
1 a 1
2 a 1
3 b 2
4 b 2
5 c 3
6 b 4

这与 rle(df$x) 相似但不同,后者将返回

Run Length Encoding
lengths: int [1:4] 2 2 1 1
values : chr [1:4] "a" "b" "c" "b"

我可以尝试 rep() 该输出。我也试过这个,非常接近,但不是因为我无法立即弄清楚的原因:

 df %>% mutate( 
try_1 = cumsum(ifelse(x == lead(x) | is.na(lead(x)), 1, 0))
)
Source: local data frame [6 x 3]

x wanted try_1
1 a 1 1
2 a 1 1
3 b 2 2
4 b 2 2
5 c 3 2
6 b 4 3

似乎应该有一个直接执行此操作的函数,我只是在我的经验中没有发现。

最佳答案

试试这个 dplyr 代码:

df %>%
mutate(try_1 = cumsum(ifelse(x != lag(x) | is.na(lag(x)), 1, 0)))

x wanted try_1
1 a 1 1
2 a 1 1
3 b 2 2
4 b 2 2
5 c 3 3
6 b 4 4

你的意思是:如果一个值与下一行的值相同,或者如果下一行的值为 NA,则增加计数。

这表示:如果该行上的变量与前一行上的变量不同,或者前一行(例如,第 1 行)上没有变量,则增加计数。

关于r - 计数对字符向量内容的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29376178/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com