累积扩展一个类别,以包括R中所有以前的观察结果
我有这个数据框:累积扩展一个类别,以包括R中所有以前的观察结果,r,R,我有这个数据框: df = as.data.frame(structure(list(ID = c(1,2,1,2), value = c(10,12,14,16), category = c(1,1,2,2)))) 我想将其放入每个类别的累积数据框中,其中每一行插入到顺序类别中: desired_df = as.data.frame(structure(list(ID =
df = as.data.frame(structure(list(ID = c(1,2,1,2),
value = c(10,12,14,16),
category = c(1,1,2,2))))
我想将其放入每个类别的累积数据框中,其中每一行插入到顺序类别中:
desired_df = as.data.frame(structure(list(ID = c(1,2,1,2,1,2),
value = c(10,12,10,12,14,16),
category = c(1,1,2,2,2,2))))
通过所需的
,我希望能够累积地绘制每个类别中观察值的分布(每个类别都是一个时间步长)。我们可以循环通过“类别”的唯一的元素,获得序列,使用该序列对原始数据集进行子集,转换类别
列,和rbind
列表元素
do.call(rbind, lapply(unique(df$category), function(i)
transform(df[df$category %in% seq_len(i),], category = i)))
# ID value category
#1 1 10 1
#2 2 12 1
#3 1 10 2
#4 2 12 2
#5 1 14 2
#6 2 16 2
我们可以循环遍历“category”的unique
元素,获得序列,使用该序列子集原始数据集,transform
category
列,以及rbind
列表
元素
do.call(rbind, lapply(unique(df$category), function(i)
transform(df[df$category %in% seq_len(i),], category = i)))
# ID value category
#1 1 10 1
#2 2 12 1
#3 1 10 2
#4 2 12 2
#5 1 14 2
#6 2 16 2
这很有效,谢谢,但我必须确保类别是数字的。@口渴ForkKnowledge如果它不是数字的
,那么匹配(df$category,unique(df$category))
将给出数字版本,它可以循环工作,谢谢,但我必须确保类别是数字的。@口渴ForkKnowledge如果它不是数字的
,然后match(df$category,unique(df$category))
将给出数字版本,可以循环使用