【发布时间】:2017-03-10 10:15:41
【问题描述】:
我有一个包含 p 列和 n 行的大型 data.frame。
我想更改 ID,即如果获得值 1,则拆分帧。但是,对于每个 ID,该值可能会出现多次,因此变得很棘手。
我正在考虑下订单,所以每次 df$Value==1 时,该行都应该有 df$order==1(next,2... 直到再次出现 df$value==1)
# Example data
df <- data.frame(ID= c(rep(1,3), rep(2,7), rep(3,5)),
Value= c(0,0,1,
0,0,1,0,1,1,0,
0,0,1,0,1))
# Desired result
df <- data.frame(ID= c(rep(1,3), rep(2,3), rep(2.1,2), rep(2.2,1),rep(2.3,1), rep(3,3), rep(3.1,2)),
Value= c(0,0,1,
0,0,1,
0,1,
1,
0,
0,0,1,
0,1))
# Alternative desired result
df <- data.frame(ID= c(rep(2,3), rep(2.1,2), rep(2.2,1),rep(2.3,1), rep(3,3), rep(3.1,2)),
Value= c(0,0,1,
0,1,
1,
0,
0,0,1,
0,1))
我已经尝试过这样做:
df %>% group_by(ID) %>% mutate(Order= seq(from=Value[1], to=which(Value==1), by=1))
但它并没有真正给我想要的。
有什么建议吗?
【问题讨论】: