gpt4 book ai didi

r - 每个实体的连续值和关联位置 - R

转载 作者:行者123 更新时间:2023-12-04 01:27:01 24 4
gpt4 key购买 nike

我有一个数据表:

enter image description here

我需要找到什么(对于每个 NAME)

一个。 “Value1”列中连续数据为 0 时的行:显示为红色

识别后,从下一行获取“Value2”的值。 :显示为绿色

我相信我可以使用包 rle() 但我正在努力获取每个“名称”的数据

DF <- readxl::read_excel("test.xlsx")
data.table::setDT(DF)
rle(DF$Value1)

以上语句将提供长度和值。我如何根据 NAME 获取此数据和位置。

输入:

structure(list(Name = c("A", "A", "A", "A", "A", "A", "A", "A", 
"A", "A", "A", "A", "B", "B", "B", "B", "B", "B", "B", "B", "B",
"B", "B", "B"), Date = structure(c(946684800, 946771200, 946857600,
946944000, 947030400, 947116800, 947203200, 947289600, 947376000,
947462400, 947548800, 947635200, 946684800, 946771200, 946857600,
946944000, 947030400, 947116800, 947203200, 947289600, 947376000,
947462400, 947548800, 947635200), class = c("POSIXct", "POSIXt"
), tzone = "UTC"), Value1 = c(1, 2, 0, 0, 10, 20, 0, 0, 0, 50,
10, 20, 0, 0, 1, 2, 10, 20, 0, 0, 0, 50, 10, 20), Value2 = c(5,
10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 5, 10, 15, 20, 25,
30, 35, 40, 45, 50, 55, 60)), row.names = c(NA, -24L), class = c("tbl_df",
"tbl", "data.frame"))

最佳答案

我认为您不需要通过按 Name 分组来完成,但我也不知道您的预期输出。

这是一个带有 rle 的选项(希望对您有所帮助)

df[with(rle(df$Value1==0),cumsum(lengths)[which(values)])+1,]

给出

> df[with(rle(df$Value1==0),cumsum(lengths)[which(values)])+1,]
Name Date Value1 Value2
5 A 2000-01-05 10 25
10 A 2000-01-10 50 50
15 B 2000-01-03 1 15
22 B 2000-01-10 50 50

其中 Value2 中的值是连续零(绿色)之后的值,您将通过读取行​​号来查看位置。

关于r - 每个实体的连续值和关联位置 - R,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61737606/

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