我有一个这样的数据集
user_id Gap itr visit_no.(desired column)
a 0.3 1 1
a 0.5 1 1
a 1.5 1 1
a 0.9 1 2
a 2.6 1 2
a 0.34 1 3
a 0.8 2 1
a 0.34 2 1
b 1.6 1 1
b 0.7 1 2
b 0.8 1 2
b 0.7 1 2
b 4.8 2 1
b 0.39 2 2
b 0.38 2 2
b 0.89 2 2
我想创建列(visit_no)。每当间隙大于1时,我们需要在接下来的行中将visit_no值增加1,直到我们找到另一个值,它将保持不变
这是数据框架
df<-data.frame(user=c("a","a","a","a","a","a","a","a","b","b","b","b","b","b","b","b")
, gap=c(0.3,0.5,1.5,0.9,2.6,0.34,0.8,0.34,1.6,0.7,0.8,0.7,4.8,0.39,0.76,0.72),
itr=c(1,1,1,1,1,1,2,2,1,1,1,1,2,2,2,2))
这与AntoniosK answer非常相似,但在< code>data.table中,没有管道运算符,使用了< code>data.table的< code>shift函数。
library(data.table)
dt <- data.table(df)
dt[, visit_no := cumsum(ifelse(shift(gap, n = 1, type = "lag", fill = 0)>1,1,0)) + 1, by = c("user", "itr")]
dt
# user gap itr visit_no
# 1: a 0.30 1 1
# 2: a 0.50 1 1
# 3: a 1.50 1 1
# 4: a 0.90 1 2
# 5: a 2.60 1 2
# 6: a 0.34 1 3
# 7: a 0.80 2 1
# 8: a 0.34 2 1
# 9: b 1.60 1 1
#10: b 0.70 1 2
#11: b 0.80 1 2
#12: b 0.70 1 2
#13: b 4.80 2 1
#14: b 0.39 2 2
#15: b 0.76 2 2
#16: b 0.72 2 2
library(dplyr)
df<-data.frame(user=c("a","a","a","a","a","a","a","a","b","b","b","b","b","b","b","b")
, gap=c(0.3,0.5,1.5,0.9,2.6,0.34,0.8,0.34,1.6,0.7,0.8,0.7,4.8,0.39,0.76,0.72),
itr=c(1,1,1,1,1,1,2,2,1,1,1,1,2,2,2,2))
df %>%
group_by(user, itr) %>%
mutate(visit_no = cumsum(ifelse(lag(gap, default = 2) > 1, 1, 0))) %>%
ungroup()
# # A tibble: 16 x 4
# user gap itr visit_no
# <fctr> <dbl> <dbl> <dbl>
# 1 a 0.30 1 1
# 2 a 0.50 1 1
# 3 a 1.50 1 1
# 4 a 0.90 1 2
# 5 a 2.60 1 2
# 6 a 0.34 1 3
# 7 a 0.80 2 1
# 8 a 0.34 2 1
# 9 b 1.60 1 1
# 10 b 0.70 1 2
# 11 b 0.80 1 2
# 12 b 0.70 1 2
# 13 b 4.80 2 1
# 14 b 0.39 2 2
# 15 b 0.76 2 2
# 16 b 0.72 2 2
我试图为数据集创建多水平条形图。这些数据涉及跑步比赛的比赛时间。 Dataframe有以下列:名称、年龄组、完成时间、完成地点、家乡。下面是示例数据。 我想创建一个类似下图的条形图。每个年龄组将有一个条形图,最快的跑步者在图表的底部,跑步者的名字与城市和次数跑了比赛低于他们的名字。 我需要一个for循环还是一个简单的groupby工作?每个年龄组的数量和大小可以根据种族动态变化,因此它不是一个常数
我正在使用如下所示的数据框(让我们调用MyData)。我想做的是按PatientKey分组并创建一个名为NewID的新ID。每次对于同一个PatientKey,时间之间的测试是 我尝试过使用dplyr来实现这一点,但问题是,当我尝试类似于以下代码时,后续值没有改变: 对象 任何人都有方便的dplyr或数据。表格解决方案,或者循环方法。
我有一张有科林斯的桌子 1 |姓名1 | 40 1 |姓名2 | 45 2 |姓名3 | 30 2 |姓名4 | 39 结果我想要这样 1 |名称1 | 40 | 2 |名称3 | 30 1 |名称2 |名称45 | 2 |名称4 | 39 大约有5公里行。 谢谢
虽然这段代码似乎可以按照td行的预期更改$TDStyle,但它没有根据esleif条件适当地更新$Font和$Text。它似乎总是保持这些字符串相同,仅基于else条件,即使它不是真的。也许只是语法问题?我确信有一个更好的方法来做到这一点,但我有限的知识使我走到了这一步。有什么建议吗?
我在我的方法中有一个调用,它有一个。我想知道调用的结果是否已加载,以便有条件地显示/隐藏DOM中的内容。现在看起来DOM是在该方法完成之前呈现的。但是我认为created中的方法是在DOM呈现之前调用的?
此问题与几天前发布的问题类似,将行从0折叠到0 与前一个问题不同的是,我们如何根据Id折叠那些时间差小于或等于60的行。 例如,使用相同的数据集 这将通过ID计算时差 这将导致如下所示的新列差异 现在只按< code >事件折叠行。身份证明..其中时间差小于或等于60,即< code>diff 正在寻找有关如何创建这种折叠数据集的帮助。提前谢谢。